我想进行聊天。例如用户A,B,C ...
每个用户都可以互相发送消息,这是whatsup
之类的标准消息。
根据this article,当一个用户向另一个用户发送消息时,我必须订阅他们一个主题。
例如,用户A向用户B发送消息,服务器创建主题testTopicName
并使用此代码行将其订阅该主题
FirebaseMessaging.getInstance().subscribeToTopic(testTopicName);
但是问题是,如果我接下来可以做的话,为什么我需要订阅用户主题:
从服务器向用户发送通知,并带有主题的名称或唯一ID
用户通过从服务器获取的主题的唯一ID打开此新主题
这是文档中的代码
mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage,
MessageViewHolder>(
FriendlyMessage.class,
R.layout.item_message,
MessageViewHolder.class,
mFirebaseDatabaseReference.child(testTopicName)) {
您能否解释一下使用订阅的优势是什么,否则我们仍然需要代表用户的消息列表...
随意问我是否解释得不够清楚
最佳答案
有很多方法可以将Firebase Cloud Messaging发送的消息作为目标。从documentation, you can send to:
在文章中,我决定将每个用户与一个主题相关联。这具有以下优点:
这些缺点:
在聊天应用程序中,用户已经具有唯一的昵称,因此这提供了一个简单的用户可见值来映射到主题。如果您,Veener和我正在聊天,将有三个主题:
/topics/user_aleksey
,/topics/user_veener
和/topics/user_puf
。每当您或Veener在聊天中提及我时,通知将被推送到/topics/user_puf
。有很多方法可以映射到主题。哪种方法最好取决于您的应用程序。