我想实施聊天。例如用户A,B,C ......
每个用户都可以向对方发送消息,标准如whatsup
...
根据this article,当一个用户向另一个用户发送消息时,我必须将他们订阅一个主题。
例如,用户A向用户B发送消息,服务器创建主题testTopicName
并使用此行代码订阅这个主题
FirebaseMessaging.getInstance().subscribeToTopic(testTopicName);
但问题是,如果我可以做下一步,我需要订阅用户主题:
从服务器向用户发送通知,并使用名称或主题的uniq Id 用户通过从服务器
重新获取的主题的uniq Id打开此新主题这是文档中的代码
mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage,
MessageViewHolder>(
FriendlyMessage.class,
R.layout.item_message,
MessageViewHolder.class,
mFirebaseDatabaseReference.child(testTopicName)) {
你能解释一下使用subscribe有什么好处,否则我们无论如何都需要代表用户的消息列表......
如果我不清楚地解释我的观点,请随时询问
答案 0 :(得分:3)
有很多方法可以定位使用Firebase Cloud Messaging发送的邮件。来自documentation, you can send to:
在文章中,我决定将每个用户与一个主题相关联。这具有以下优点:
这些缺点:
在聊天应用中,用户已经拥有唯一的昵称,因此这提供了一个简单的用户可见值来映射到主题。如果您,Veener和我在聊天,则会有三个主题:/topics/user_aleksey
,/topics/user_veener
和/topics/user_puf
。每当您或Veener在聊天中提到我时,通知都会被推送到/topics/user_puf
。
有很多方法可以映射到主题。哪种方式最好取决于您的应用。
答案 1 :(得分:1)
如果您有很多客户,发布/订阅很有用。让我们假设您有一个天气应用程序,并希望将龙卷风等天气预警发送给居住在特定城市的所有人。您可以向该城市的主题发布一次消息(可以将其发送给订阅该城市的所有人),或者您可以向居住在该城市的每个人发送数千条消息,然后循环播放所有用户并发送许多个人消息。哪一个似乎更容易实现和交付?