Firebase云消息传递 - GCM规范ID仍然必要吗?

4

我一直在了解GCM中的规范ID,以及它们如何帮助纠正发送重复推送通知的问题,并提高安全性。但是现在有了Firebase Cloud Messaging (FCM),这个问题还存在吗?

我注意到现在开发人员不再需要注册部分,我们只需要等待如下的令牌刷新:

    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    @Override
    public void onTokenRefresh() {
        // Get updated registration ID
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Logger.d("Refreshed FCM token: " + refreshedToken);
    }
}

关于规范ID的一些信息可以在这里找到。

1个回答

5

更新:

我最近重新研究了一下关于Canonical IDs的问题,并得出以下结论。

在FCM中,由于Instance ID服务的工作方式,Canonical IDs似乎不再使用(或者至少极其罕见)。简而言之,该服务的工作方式是每个应用实例只有一个有效令牌。

如果旧令牌过期(无论什么原因),FCM会触发tokenRefresh事件,您将获得新的注册令牌,并且必须相应地处理它(在onTokenRefresh()中)。


简短回答,是的。这仍然是必要的。

预计onTokenRefresh()方法会在令牌实际刷新时触发。从那里开始,开发人员有责任向应用服务器发送注册令牌。

但是,如果您无法获取新的注册令牌(例如忘记保存它,删除它并仅拥有以前的注册令牌等),则可能会导致您(开发人员)向不再有效的注册令牌发送请求。这就是Canonical IDs的作用。

我想你可以将Canonical IDs视为另一种安全措施,以便开发人员仍然可以获得有效的注册令牌。有关Canonical IDs的详细信息(如何处理等)在FCM文档此处中提到。


Firebase Admin SDK for JAVA 没有获取规范 ID 的方法。参考:https://firebase.google.com/docs/cloud-messaging/send-message,在这种情况下该怎么办? - binaryKarmic
@binaryKarmic - 就像我在答案更新中提到的那样,现在甚至不再需要它。如果由于某种原因你需要跟踪它,那么这本身就是一个问题。我建议联系Firebase支持。 - AL.

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