2017-03-26 10 views
1

メッセージが送信者によって受信者に送信されるときにfirebaseがデータベースとして使用されます。Swift - Firebaseバックエンドでユーザーごとにメッセージをグループ化する方法

メッセージデータ送信者ID、受信者ID、送信されるSenderName、TimeStamp、およびtypeOfMediaが含まれます。私は効果的

+0

何を試しましたか?何が効いていないのですか? [最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)を参照してください。 – Jay

答えて

0

受信側にこのメッセージを送信する方法とグループメッセージをしたい

私はいくつかのメッセージングアプリに勤務し、いくつかの成功を収めてきました。これがFirebaseのデータ構造を実装した方法です。ユーザー間の直接のメッセージについて

、私はこのようなエントリがありますので、これはあなたのコードのために何を意味するの

direct-messages: 
    user-A-UID: 
     user-B-UID: 
      message-1-ID: 
       senderId: "user-A-UID", 
       senderName: "User A", 
       text: "hello, User B!", 
       timestamp: 1490570058, 
       status: "read" 
      message-2-ID: 
       senderId: "user-B-UID", 
       senderName: "User B", 
       text: "well hello, user A. How are you?", 
       timestamp: 1490570212, 
       status: "sent" 
    user-B-UID: 
     user-A-UID: 
      message-1-ID: 
       senderId: "user-A-UID", 
       senderName: "User A", 
       text: "hello, User B!", 
       timestamp: 1490570058, 
       status: "read" 
      message-2-ID: 
       senderId: "user-B-UID", 
       senderName: "User B", 
       text: "well hello, user A. How are you?", 
       timestamp: 1490570212, 
       status: "sent" 

を?さて、ref.child("direct-messages").child(uid).childAddedリスナーをlet uid = FIRAuth.auth()?.currentUser?.uidとすることができます。

メッセージングUIで、送信ボタンを押したときに、let messageId = ref.child("direct-messages").child(uid).childByAutoId()のような操作を行います。これにより、メッセージごとに固有の識別子が与えられます。このように使用するref.child("direct-messages").child(uid).child(messageId).updateChildValues(newMessagePacket)

これで誰も書いておられないので、それに応じて権限を設定する必要もあります。 $uid == auth.uidの場合にのみdirect-messages.$uidに書き込むことができます。その詳細については、this pageをご覧ください。

しかし、ユーザーBが新しい子どものためにdirect-messages.user-B-UIDだけを聞いている場合、ユーザーAがメッセージを送信すると、どのように更新を取得できますか?(上記のアクセス許可に基づいて、direct-messages.user-A-UID.$messageIDにのみ書き込まれます)これを行う最善の方法は、小さなAmazon EC2インスタンス実行ノードを使用してfirebase-adminライブラリを使用して更新をリッスンし、データをdirect-messages.user-B-UID.$messageIDに複製することです。


これは、私が2つのプロダクションメッセージングアプリケーションで使用する技術です。私はFirebaseの鍵となるのは、データの重複とアクセス権です。これは私のためにはうまくいきましたが、それ以上の質問があれば教えてください。

関連する問題