[英]How to get Android device token for push notifications?
我们经历了各种 Stackoverflow 问题和答案,并查看了文档和文章,但我们尝试过的所有方法(例如 FireBaseInstanceId 和扩展 FirebaseMessagingService)都会导致一个空令牌。
目前尚不清楚我们如何获取用户设备的令牌以用于推送通知。
有人可以澄清一下我们如何在 2021 年获得用户的设备令牌吗?
谢谢
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Log.e("newToken", token);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}
}
在 Android 清单文件中添加:
<service
android:name=".MyFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
每当您的应用程序首次安装并打开时,都会创建 MyFirebaseMessagingService 并调用 onNewToken(String token) 方法并生成令牌,即您的设备令牌或 FCM 令牌。
通过这种方式,您可以获得唯一的设备ID
TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
TELEPHONY_SERVICE);
getDeviceId()
将返回唯一的设备 ID。
String deviceId = telephonyManager.getDeviceId();
顺便说一句,这需要android.permission.READ_PHONE_STATE
的许可
FireBaseInstanceId 已被弃用, 文档说使用 FirebaseMessaging 来检索 FCM 令牌。 特别是getToken()方法以这种方式工作:
Returns the FCM registration token for this Firebase project. This creates a Firebase Installations ID, if one does not exist
所以,为了生成令牌,我认为扩展 FirebaseMessagingService 不是强制性的,只要你想像这样调用它
FirebaseMessaging.getInstance().token.addOnCompleteListener {
if (!it.isSuccessful) {
return@addOnCompleteListener
}
val token = it.result //this is the token retrieved
}
一旦你有一个示例推送通知项目工作,那么 Java 代码是:
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (!task.isSuccessful()) {
Log.w(TAG, "Fetching FCM registration token failed", task.getException());
return;
}
// Get new FCM registration token
String token = task.getResult();
// Log and toast
String msg = getString(R.string.msg_token_fmt, token);
Log.d(TAG, msg);
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}
});
来源=https://firebase.google.com/docs/cloud-messaging/android/client
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.