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

时间:2017-01-17 00:42:29

标签: android firebase google-cloud-messaging firebase-cloud-messaging

我一直在阅读GCM中的规范ID以及它们如何帮助纠正发送重复推送通知和安全性。但现在使用Firebase云消息传递(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的一些信息here

1 个答案:

答案 0 :(得分:5)

<强>更新

我最近重新讨论了关于Canonical ID的这个主题并得出以下结论。

在FCM中,由于Instance ID service的工作方式,似乎不再使用Canonical ID(或至少极少)。简而言之,该服务的工作原理是每个App Instance只有一个有效令牌。

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

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

每当令牌实际刷新时,都会触发onTokenRefresh()方法。从那里开始,开发人员有责任将注册令牌发送到App Server。

但是,如果您无法获得新注册令牌(例如忘记保存,删除它,只有之前的注册令牌等)。 ),它可能导致您(开发人员)发送到应该不再有效的注册令牌。当Canonical ID进来的时候。

我猜你可以将Canonical ID视为另一种安全措施,这样开发人员仍然可以获得有效的注册令牌。 FCM文档here中提到了有关Canonical ID(如何处理和填充)的详细信息。