Why do I need to subscribe users to topics in Firebase?
I want to implement chat. For example, users A, B, C…
Each user can message each other, which is standard, such as WhatsApp
….
And according to the this article, when one user sends a message to another user , I have to subscribe them to a topic.
For example, user A sends a message to user B, and the server creates a topic testTopicName
and subscribes them to the topic with this line of code
FirebaseMessaging.getInstance().subscribeToTopic(testTopicName);
But the question is, why do I need to subscribe to user topics if I can do it next:
Sends a notification to the user from the server with the name or unique identification of the topic
The user opens this new topic with the unique ID of the topic retrieved from the server
This is the code in the documentation
mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage,
MessageViewHolder>(
FriendlyMessage.class,
R.layout.item_message,
MessageViewHolder.class,
mFirebaseDatabaseReference.child(testTopicName)) {
Can you explain what are the advantages of using subscriptions, otherwise we need to represent the list of user messages anyway….
If I don’t explain clearly enough, feel free to ask me
Solution
There are many ways to target messages sent using Firebase Cloud Messaging. fromdocumentation, you can send to :
- Topic name
- Device registration token
- Device group name
In this post, I decided to associate each user with a topic. This has the following advantages:
- The application does not have to deal with registration token If you use these tags, you have to store them somewhere, provide them with lookups, etc. This is all possible, but using themes will make the article shorter.
- If the same user has a chat app on multiple devices, they will receive a notification on each device
And these disadvantages:
- Each user needs to have a unique username.
- Messages are not private (see Creating.) Firebase topic for each user )
In chat applications, the user already has a unique nickname, so this provides a simple user-visible value to map to a topic. If you, Veener, and I are chatting, there will be three topics: /topics/user_aleksey, /topics/user_veener, and /topics/user_puf
. Whenever you or Veener mention me in the chat, a notification will be pushed to /
topics/user_puf
.
There are many ways to map to topics. Which is best depends on your application.