由于不推荐使用 getToken(),我想知道获取 Firebase token 以发送推送通知的正确方法是什么。
最佳答案
更新答案
FirebaseInstanceId 已弃用,但现在您可以使用 FirebaseMessaging.getInstance().token。
例如:
FirebaseMessaging.getInstance().token.addOnSuccessListener { result ->
if(result != null){
fbToken = result
// DO your thing with your firebase token
}
}
老答案
作为 documentation说:
This method was deprecated. In favour of getInstanceId().
getInstanceId()将返回一个带有 InstanceIdResult 的任务。像这样:
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
}
});
虽然这种方法确实会取代 FirebaseInstanceId.getInstanceId().getToken() 的使用,但它并不能解决 FirebaseInstanceIdService 也已被弃用的事实留给我们另一个问题是:在哪里使用它? 它可以在任何 Activity 上下文中使用,它将始终返回 token 。但是,如果我们只想在创建并且很少更新时获取 token 怎么办? 为此,您应该从旧的 FirebaseMessagingService 实现中覆盖新方法 onNewToken: (是的,“消息传递”,而不是“InstanceId”)
@Override
public void onNewToken(String s) {
super.onNewToken(s);
String deviceToken = s;
// Do whatever you want with your token now
// i.e. store it on SharedPreferences or DB
// or directly send it to server
}
这种方式代码将保持精简,甚至不需要使用第一种方法。
关于android - 我现在应该使用什么方法,因为 FirebaseInstanceId.getInstance().getToken() 已被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51125169/