Android 现在FirebaseInstanceId.getInstance().getToken()已不推荐使用,使用什么
我想知道,现在getToken()已被弃用,获取Firebase令牌以发送推送通知的正确方法是什么。更新的答案 FirebaseInstanceId已弃用,但现在您可以使用FirebaseInstallations.getInstance().getToken()或FirebaseMessaging.getInstance().token 例如:Android 现在FirebaseInstanceId.getInstance().getToken()已不推荐使用,使用什么,android,firebase,push-notification,firebase-cloud-messaging,Android,Firebase,Push Notification,Firebase Cloud Messaging,我想知道,现在getToken()已被弃用,获取Firebase令牌以发送推送通知的正确方法是什么。更新的答案 FirebaseInstanceId已弃用,但现在您可以使用FirebaseInstallations.getInstance().getToken()或FirebaseMessaging.getInstance().token 例如: FirebaseInstallations.getInstance().getToken(true).addOnCompleteListener {
FirebaseInstallations.getInstance().getToken(true).addOnCompleteListener {
fbToken = it.result!!.token
// DO your thing with your firebase token
}
或另一种选择:
FirebaseMessaging.getInstance().token.addOnCompleteListener {
if(it.isComplete){
fbToken = it.result.toString()
// DO your thing with your firebase token
}
}
旧答案
正如上面所说:
此方法已被弃用。
支持getInstanceId()
将返回带有和InstancedResult的任务。像这样:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
// Do whatever you want with your token now
// i.e. store it on SharedPreferences or DB
// or directly send it to server
}
});
这样代码将保持精简,甚至不需要使用第一种方法。FirebaseInstancedService已被弃用 只需覆盖
FirebaseMessagingService
public class LatestFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String mToken) {
super.onNewToken(mToken);
Log.e("TOKEN",mToken);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}}
在AndroidManifest.xml
<service
android:name=".LatestFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
对不起,我不明白。我不擅长英语吗?(抱歉,如果我犯了一些错误)当您需要回调外部的令牌时,这不是解决方案。“这是不起作用的。”我同意。newToken似乎没有100%被调用,因此另一种检索现有令牌的方法是required@behelit我的解决方案是一直尝试获取它,直到系统返回一个有效值(也称为递归)。@CarlosEduardoKiLee这应该不会有任何问题。这可能不是最佳做法,因为在刷新令牌之前,它将返回相同的值;现在FirebaseInstanceId已被弃用,您是否找到了任何解决方案@mliu?FirebaseMessaging.getInstance()。getToken()是新的方法。。。。来源:因此,这是不推荐的。注意:如果你没有像你想象的那样经常收到onNewToken,如果你有多个用户的支持,那就麻烦了
<service
android:name=".LatestFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String mToken = instanceIdResult.getToken();
Log.e("Token",mToken);
}
});