作者:席昀2010_445_882 | 来源:互联网 | 2023-02-09 15:50
我正在从GCM升级到FCM。在onTokenRefresh之外获取Firebase设备令牌的正确方法是什么?
我正在尝试获取设备令牌,以便以后可以在服务器上重新启用它。我最初是按照此处显示的方法1 的文档获取设备令牌的。但是,当我尝试直接通过方法2访问设备令牌时,会得到一个不同的令牌。我是否在方法2中错误地获取了设备令牌?
方法1:在FirebaseInstanceIdService.onTokenRefresh()中
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
方法2:直接访问设备令牌
FirebaseInstanceId instanceID = FirebaseInstanceId.getInstance();
String registratiOnToken= instanceID.getToken(this.projectNumber, "FCM");
AL...
6
只是为了解释方法1中发生的情况。建议将令牌放入内部,onTokenRefresh()
因为触发此方法时,这意味着先前的令牌已失效。从文档:
在系统确定需要刷新令牌时调用。应用程序应调用getToken()并将令牌发送到所有应用程序服务器。
对于方法2,您正在调用getToken(String authorizedEntity, String scope)
,而不是getToken()
。设置您的应用程序以接收来自多个发件人的消息时,通常使用带有两个参数的参数。
对于getToken(String authorizedEntity, String scope)
具有不同项目ID(authorizedEntity
)的每次调用,它将返回不同的令牌。
只需更换您的方法2,在同一呼叫方法1,如下所示:
String registratiOnToken= FirebaseInstanceId.getInstance().getToken();
并且您应该能够检索指定的令牌。令牌通常是在onCreate()
您的初始活动中获取的。
1> AL...:
只是为了解释方法1中发生的情况。建议将令牌放入内部,onTokenRefresh()
因为触发此方法时,这意味着先前的令牌已失效。从文档:
在系统确定需要刷新令牌时调用。应用程序应调用getToken()并将令牌发送到所有应用程序服务器。
对于方法2,您正在调用getToken(String authorizedEntity, String scope)
,而不是getToken()
。设置您的应用程序以接收来自多个发件人的消息时,通常使用带有两个参数的参数。
对于getToken(String authorizedEntity, String scope)
具有不同项目ID(authorizedEntity
)的每次调用,它将返回不同的令牌。
只需更换您的方法2,在同一呼叫方法1,如下所示:
String registratiOnToken= FirebaseInstanceId.getInstance().getToken();
并且您应该能够检索指定的令牌。令牌通常是在onCreate()
您的初始活动中获取的。