我正在从 GCM 升级到 FCM。在 onTokenRefresh 之外获取 Firebase 设备 token 的正确方法是什么?
我正在尝试获取设备 token ,以便稍后可以在我的服务器上重新启用它。我最初按照显示的文档获取设备 token here对于方法 1。但是,当我尝试通过方法 2 直接访问设备 token 时,我得到了一个不同的 token 。我是否在方法 2 中错误地检索了设备 token ?
方法一:FirebaseInstanceIdService.onTokenRefresh() 内部
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
方法二:直接获取设备 token
FirebaseInstanceId instanceID = FirebaseInstanceId.getInstance();
String registrationToken = instanceID.getToken(this.projectNumber, "FCM");
最佳答案
只是为了解释方法 1 中发生了什么。建议获取onTokenRefresh()
里面的token因为当此方法被触发时,这意味着 previous token 已失效。来自文档:
Called when the system determines that the tokens need to be refreshed. The application should call getToken() and send the tokens to all application servers.
对于方法 #2,您正在调用 getToken(String authorizedEntity, String scope)
, 而不是 getToken()
. setting up your app to receive messages from multiple senders时常用带两个参数的那个.
每次使用不同的项目 ID (authorizedEntity
) 调用 getToken(String authorizedEntity, String scope)
时,都会返回不同的 token 。
只需用方法 1 中的相同调用替换您的方法 2,如下所示:
String registrationToken = FirebaseInstanceId.getInstance().getToken();
您应该能够检索到指定的 token 。 token 通常在初始 Activity 的 onCreate()
中检索。
关于android - 如何在 FirebaseInstanceIdService 之外访问 Firebase token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42684383/