【问题标题】:onNewToken() triggers twice for multiple sender IDsonNewToken() 为多个发件人 ID 触发两次
【发布时间】:2019-01-15 13:49:42
【问题描述】:

由于 GCM 已弃用,我们正在积极开发推送通知 SDK 并将其迁移到 FCM 系统。

SDK gradle 文件包含 firebase-messaging 包,SDK 可以正确处理所有令牌注册和消息接收操作。 SDK从instanceId.getToken(senderid, "fcm")方法中获取token并成功发送到云端。

问题发生在测试多个发件人ID的情况下。如果客户使用自己的 Firebase 实现(17.1.0+)和默认发件人 ID(从 google-services.json 获取),有趣的是,onNewToken 方法将为 SDK 和客户发件人 ID 触发两次。我们希望只获得客户发件人 ID(默认一个)。

我们如何理解令牌的来源?来自哪个发件人ID?

(我们也联系了 Google,但他们无法提供帮助)

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案1】:

    我通常采用的做法是根据需要为每个发件人致电getToken(senderid, scope)。这样,您一定会得到预期的令牌。

    但是,如果目标是获取默认值,则无需担心。 onNewToken() will only return the token for the default sender.

    【讨论】:

    • 感谢您的回答。我们希望它也只返回默认发件人 ID 的令牌,但根据我的问题,它在 onNewToken() 中返回两个令牌,而不是一个。但是正如您提到的,我们需要为每个发件人提供一个令牌。无论如何,我们正在检查我们的实现是否导致了这种意外行为,再次感谢。
    • onNewToken() 返回单个字符串。该字符串是默认字符串。就像我上面提到的,如果实现了多个发送者,你应该在onNewToken() 中调用getToken(senderId, scope)。这样,您就不会混淆哪个令牌来自哪个发件人。
    • 实际上我的意思是 onNewToken() 执行了两次。
    • 这很奇怪。我认为它还返回了两个不同的令牌?还是一样?
    • Google 官方支持对此有何评论?无论哪种方式,我上面提到的解决方法仍然可以工作。只要确保根据需要提供 senderId 就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2021-11-19
    • 2013-03-28
    • 2013-09-12
    相关资源
    最近更新 更多