Firebase 提供的例子是:
Your Android app can send an upstream message using
FirebaseMessaging.send
:FirebaseMessaging fm = FirebaseMessaging.getInstance(); fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com") .setMessageId(Integer.toString(msgId.incrementAndGet())) .addData("my_message", "Hello World") .addData("my_action","SAY_HELLO") .build());
1:
他们已经解释了消息 ID 是什么:
A message ID that should be unique for each sender ID.
但是,我没有准确地理解它们的意思。所以,每次我发送消息时,这个数字都会增加?是什么原因?我在哪里存储这个值?
2:
他们还有 addData()
方法,但我不完全理解它的作用。将接受对此方法的完整、详细的解释。
最佳答案
1:
消息 ID(顾名思义)是您从设备发送的消息的标识符,用于区分每条消息。他们还刚刚提到,每封邮件对于每个发件人 ID 都应该是唯一的。
例如,您有 2 个发件人 ID,每个发件人 ID 都可以有一个值为 1
的消息 ID,但该消息 ID 不应在同一个发件人 ID 中重复。
从技术上讲,您的实现是在发送消息之前递增消息 ID 的值。它在简单上游消息的示例代码中不可见,但用于 msgId
变量的数据类型是 AtomicInteger
,如 Sending upstream messages to device groups 的文档中所示。 :
FirebaseMessaging fm = FirebaseMessaging.getInstance();
String to = aUniqueKey; // the notification key
AtomicInteger msgId = new AtomicInteger();
fm.send(new RemoteMessage.Builder(to)
.setMessageId(msgId)
.addData("hello", "world")
.build());
incrementAndGet()
确保 AtomicInteger 的值在使用前递增,使其在每次调用时都不同(唯一)。 (有关使用 AtomicInteger 的更多想法,请参见 post)
我不完全确定将它存储在哪里。在我看来,由于消息是要发送到您的应用服务器的,因此您应该在收到消息后将其存储在那里。
2:
addData()
是您包含要发送的消息的键值对的地方。详细信息、内容或您打算发送到应用服务器的任何内容。
将其视为下游消息传递的 data
有效负载。
关于android - 在 Firebase Cloud Messaging 中,消息 ID 是什么以及我们在哪里使用 addData(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40550600/