我们翻阅了各种Stackoverflow的问题和答案,并查看了文档和文章,但我们尝试的所有方法,如FirebaseInstanceId和扩展FirebaseMessagingService都导致令牌为空。
目前不清楚如何为用户的设备获取令牌,以便进行推送通知。
请问在2021年,有人能澄清如何获取用户设备令牌吗?
谢谢。
目前不清楚如何为用户的设备获取令牌,以便进行推送通知。
请问在2021年,有人能澄清如何获取用户设备令牌吗?
谢谢。
FireBaseInstanceId已被弃用,文档建议使用FirebaseMessaging获取FCM令牌。 具体来说,方法getToken()的工作方式如下:
Returns the FCM registration token for this Firebase project. This creates a Firebase Installations ID, if one does not exist
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
这篇文章介绍了如何向 Android 客户端集成 Firebase 云消息传递(FCM)服务。使用 FCM,您可以发送消息到客户端应用,同时客户端可以在前台或后台接收消息。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>
通过这种方式,您可以获取唯一的设备ID。
TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
TELEPHONY_SERVICE);
getDeviceId()
将返回唯一的设备ID。
String deviceId = telephonyManager.getDeviceId();
顺便提一下,这需要android.permission.READ_PHONE_STATE
的权限。