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());
他们已经解释了消息ID是什么:
每个发件人ID都应该唯一的邮件ID。
但是,我没有明确表达他们的意思精确。那么,每次发送消息时,这个数字都会递增?是什么原因?我在哪里存储这个值?
他们也有方法addData()
,我不完全理解这是做什么的。将接受关于此方法的完整详细说明。
答案 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
有效负载相同。