我一直在阅读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的一些信息。
更新:
我最近重新讨论了有关规范ID的主题,并得出以下结论。
在FCM中,由于实例ID服务的工作方式,似乎不再使用(或至少很少使用)规范ID 。简而言之,该服务的工作原理是每个应用程序实例只有一个有效令牌。
如果较旧的令牌到期(无论出于何种原因),则FCM会触发tokenRefresh事件,您将在该事件中获得新的注册令牌,并且还必须在该事件中相应地进行处理(在中onTokenRefresh()
)。
简短的回答,是的。仍然有必要。
onTokenRefresh()
只要令牌实际被刷新,该方法就会触发。从那里,开发者有责任将注册令牌发送到App Server。
但是,如果您无法获得新的注册令牌(例如,忘记保存,删除它并且仅拥有先前的注册令牌等),可能会导致您(开发人员)发送一个假定不再有效的注册令牌。这就是规范ID出现的时间。
我想您可以将Canonical ID视为另一种安全措施,以便开发人员仍可以保留有效的注册令牌。有关规范ID的详细信息(它是如何处理之类的东西)都在FCM文档提到这里。