onNewToken() 会为多个发送者ID触发两次。

3
我们正在积极开发一个推送通知SDK,并将其迁移到FCM系统,因为GCM已经被弃用。
SDK gradle文件包含firebase-messaging包,SDK正确处理所有令牌注册和消息接收操作。SDK使用instanceId.getToken(senderid,“fcm”)方法获取令牌并成功发送到云端。
问题出现在测试多个sender id的情况下。如果客户使用自己的Firebase实现(17.1.0+)并使用默认sender id(从google-services.json获取),则onNewToken方法会有趣地触发两次,分别对应SDK和客户sender IDs。我们希望只获取客户的sender id(默认值)。
我们如何确定令牌来自哪里?来自哪个sender id?
(我们也联系了Google,但他们无法提供帮助)
1个回答

1
我通常采用的做法是根据需要为每个发送者调用getToken(senderid, scope)。这样,您可以确保获得预期的令牌。
但是,如果目标是获取默认令牌,则无需担心。onNewToken() 仅会返回默认发送者的令牌

感谢您的回答。我们期望它只返回默认发送者ID的令牌,但根据我的问题,在onNewToken()中它返回了两个令牌,而不是一个。但是,正如您所提到的,我们需要每个发送者一个令牌。无论如何,我们正在检查我们的实现是否导致了这种意外行为,再次感谢。 - Ozgur
1
onNewToken() 返回一个字符串。该字符串是默认的。如我上面所提到的,如果实现了多个发送者,则应在 onNewToken() 中调用 getToken(senderId, scope)。这样,您就不会混淆哪个令牌来自哪个发送者。 - AL.
1
实际上,我想表达的是 onNewToken() 被执行了两次。 - Ozgur
很奇怪...我猜它也返回了两个不同的标记吗?还是相同的? - AL.
谷歌官方支持表示了什么?无论如何,我上面提到的解决方法仍然可行。只需确保根据需要提供senderId即可。 - AL.
他们说了你说的话 :) 我会再调查一下,谢谢! - Ozgur

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