在新的 Firebase 中,在 Notification 下,他们提到开发人员可以向特定设备发送通知。为此,在控制台中它要求提供 FCM 令牌。它到底是什么,我怎样才能得到那个令牌?
原文由 arunrk 发布,翻译遵循 CC BY-SA 4.0 许可协议
在新的 Firebase 中,在 Notification 下,他们提到开发人员可以向特定设备发送通知。为此,在控制台中它要求提供 FCM 令牌。它到底是什么,我怎样才能得到那个令牌?
原文由 arunrk 发布,翻译遵循 CC BY-SA 4.0 许可协议
他们在以下发行说明中弃用了 getToken() 方法。相反,我们必须使用 getInstanceId。
https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId
Task<InstanceIdResult> task = FirebaseInstanceId.getInstance().getInstanceId();
task.addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult authResult) {
// Task completed successfully
// ...
String fcmToken = authResult.getToken();
}
});
task.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
要在同一个侦听器中处理成功和失败,请附加一个 OnCompleteListener:
task.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (task.isSuccessful()) {
// Task completed successfully
InstanceIdResult authResult = task.getResult();
String fcmToken = authResult.getToken();
} else {
// Task failed with an exception
Exception exception = task.getException();
}
}
});
此外,不推荐使用 FirebaseInstanceIdService 类,他们在 FireBaseMessagingService 中提出了 onNewToken 方法来替代 onTokenRefresh,
你可以参考这里的发行说明, https://firebase.google.com/support/release-notes/android
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Use this code logic to send the info to your server.
//sendRegistrationToServer(s);
}
原文由 Manoj Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.1k 阅读
1 回答1.3k 阅读
1.3k 阅读
究竟是什么?
一个 FCM 令牌,或者通常称为
registrationToken
就像在 google-cloud-messaging 中一样。如GCM FCM 文档 中所述:我怎样才能得到那个令牌?
更新:仍然可以通过调用
getToken()
来检索令牌,但是,根据 FCM 的最新版本,FirebaseInstanceIdService.onTokenRefresh()
已替换为FirebaseMessagingService.onNewToken()
体验 功能与onTokenRefresh()
相同。老答案:
根据 FCM 文档: