我一直在阅读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。
答案 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(如何处理和填充)的详细信息。