在 Firebase Cloud Messaging 中,消息 ID 是什么以及我们在哪里使用 addData()

Ali*_*eir 3 android firebase firebase-cloud-messaging

Firebase提供的示例是:

您的 Android 应用程序可以使用以下命令发送上游消息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());
Run Code Online (Sandbox Code Playgroud)

1:

他们解释了消息 ID 是什么:

对于每个发件人 ID 来说,消息 ID 应该是唯一的。

然而,我并没有明白他们的确切意思。那么,每次我发送一条消息时,这个数字都会增加吗?是什么原因?我在哪里存储这个值?


2:

他们也有方法addData(),但我不完全明白这是做什么的。对此方法的完整、详细的解释将被接受。

AL.*_*AL. 5

1:

消息 ID(顾名思义)是您从设备发送的消息的标识符,用于区分每条消息。他们还提到,每条消息对于每个发件人 ID 都应该是唯一的

例如,您有 2 个发件人 ID,每个发件人 ID 都可以有一个值为 的消息 ID 1,但该消息 ID 不应在同一发件人 ID 中重复。

从技术上讲,您的实现是在发送消息之前增加消息 ID 的值。它在简单上游消息的示例代码中不可见,但用于msgId变量的数据类型是如将上游消息发送到设备组的AtomicInteger文档中所示的:

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());
Run Code Online (Sandbox Code Playgroud)

确保incrementAndGet()AtomicInteger 的值在使用前递增,使其每次调用时都不同(唯一)。(有关使用 AtomicInteger 的更多想法,请参阅这篇文章)

我不完全确定你将其存储在哪里。在我看来,由于该消息旨在发送到您的应用程序服务器,因此您应该在收到它后将其存储在那里。


2:

您可以在其中addData()包含要发送的消息的键值对。详细信息、内容或您打算发送到应用程序服务器的任何内容。

将其视为与下游消息传递的有效负载相同data