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

时间:2016-11-11 14:56:45

标签: 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());

1

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

  

每个发件人ID都应该唯一的邮件ID。

但是,我没有明确表达他们的意思精确。那么,每次发送消息时,这个数字都会递增?是什么原因?我在哪里存储这个值?

2

他们也有方法addData(),我不完全理解这是做什么的。将接受关于此方法的完整详细说明。

1 个答案:

答案 0 :(得分:4)

<强> 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

你存放的地方是我不完全确定的部分。我看到它的方式,因为该消息旨在发送到您的App Server,您应该在收到它后将其存储在那里。

<强> 2

addData()是您要包含要发送的邮件的键值对的位置。您打算向App Server发送的详细信息,内容或任何内容。

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