2017-03-26 7 views
1

발신자가 수신자에게 메시지를 보내면 데이터베이스로 firebase를 사용합니다. firebase 데이터베이스가 메시지로 업데이트됩니다.Swift - Firebase 백엔드에서 사용자 별 메시지 그룹화 방법

메시지 데이터 senderID, ReceiverID는 물론 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 일 때만 쓸 수 있어야합니다. 이에 대한 자세한 정보는 this page을 확인하십시오.

그러나 사용자 B가 새 자녀에 대해서만 direct-messages.user-B-UID의 말을 듣는 경우 사용자 A가 메시지를 보내면 업데이트를받을 수 있습니다 (위의 사용 권한에 따라 direct-messages.user-A-UID.$messageID에만 기록됨)? 이 작업을 수행하는 가장 좋은 방법은 firebase-admin 라이브러리를 사용하여 노드를 실행하는 작은 Amazon EC2 인스턴스를 사용하여 업데이트를 수신하고 데이터를 direct-messages.user-B-UID.$messageID에 복제하는 것입니다.


이것은 2 개의 프로덕션 메시징 응용 프로그램에서 사용하는 기술입니다. 파이어베이스의 핵심은 데이터 복제와 권한 같은 것 같습니다. 이것은 나를 위해 잘 작동했지만 더 이상 질문이 있으면 알려주십시오.