FCM | 多个发送者 ID

5

从GCM迁移到FCM。

在GCM中,我们可以像下面这样调用getToken()方法来处理多个sender id:

String senderIds = "112233445566,889922338899";
String token = instanceID.getToken(senderIds,
                        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

Q1 - 在切换到FCM后,它是否保持原样,还是需要进行任何更改以获取多个sender id的令牌?根据这个参考,我知道我可以为每个sender id调用getToken(“senderIds1”,“FCM”),但我希望在切换到FCM时代码最少更改。

Q2 下面的代码是否适用于FCM(与GCM相同),或者我必须调用 getToken(“senderIds1”,“FCM”); getToken(“senderIds2”,“FCM”)?

getToken("senderIds1, senderIds2", "FCM") 

我无法标记你。因此,将评论复制粘贴到答案中:我在这里提出了类似的问题(https://stackoverflow.com/questions/52189326/is-firebaseinstanceidgettokensenderids-fcm-supported-where-senderids-is-c)。我正在与FCM支持团队继续交谈。一旦我从他们那里得到最终确认,我会更新您。 - garnet
1
我决定将此帖子标记为重复,以参考您提到的官方处理多个发送者ID的方式。@garnet 也请告诉我们Firebase团队对此的反馈。干杯! - AL.
@AL。引用Firebase支持团队的回复:我们的工程师刚刚确认,InstanceID或FirebaseInstanceId API不支持多个发送者。在这些情况下,我们的服务器似乎会返回令牌的旧版本,因为它假定任何请求多个发送者的请求都是GoogleCloudMessaging.register请求。我们将在我们的端口修复此问题,但我们还没有关于何时可用的预计时间。同时,为了获得类似的行为,您应该为每个发送者ID请求不同的令牌。这些不会相互冲突。 - garnet
@AL. 当我们的支持团队被问及有关向后兼容性的问题时,他们进一步澄清道:我们没有计划通过InstanceID或FirebaseInstanceId API支持多个发送者。我们还将努力更新我们的文档,以避免混淆。感谢您的提醒。 - garnet
@garnet 谢谢你的更新。有了那个报价,我的更新答案就非常准确了。干杯! - AL.
1个回答

6

进一步研究此函数——扫描文档并查看旧帖子——我决定更新此答案。由于该行为在 FCM 正式发布之前就已存在,所以服务中的许多东西已经更新了(部分已过时)。例如,回顾 C2DM 到 GCM 的迁移,其中说明了令牌不兼容的部分

对于使用 getToken() 通过逗号分隔的 senderIds,由于它没有记录在任何官方 FCM 文档或声明中,建议避免使用它们,而是按照官方程序继续操作 —— 使用 getToken("senderId", "scope") 针对每个发送方,并根据需要维护每个令牌。

仍然选择使用 getToken() 通过逗号分隔的 senderIds 可能会在未来产生意外行为,因此我强烈建议开发人员按照重复帖子中建议的程序操作。


1
我在这里提出了类似的问题。我正在与 FCM 支持团队继续交流。一旦他们最终确认,我会向您更新。 - garnet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接