如何获取用于推送通知的Android设备令牌?
我们已经阅读了各种Stackoverflow问题和答案,并查看了文档和文章,但我们尝试过的所有方法,如FireBaseInstanceId和扩展FirebaseMessagingService,都会导致一个空令牌 出于推送通知的目的,我们如何获取用户设备的令牌尚不清楚 有人能澄清一下我们如何在2021年获得用户的设备令牌吗如何获取用于推送通知的Android设备令牌?,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我们已经阅读了各种Stackoverflow问题和答案,并查看了文档和文章,但我们尝试过的所有方法,如FireBaseInstanceId和扩展FirebaseMessagingService,都会导致一个空令牌 出于推送通知的目的,我们如何获取用户设备的令牌尚不清楚 有人能澄清一下我们如何在2021年获得用户的设备令牌吗 谢谢通过这种方式,您可以获得唯一的设备id TelephonyManager telephonyManager; telephonyManager = (TelephonyM
谢谢通过这种方式,您可以获得唯一的设备id
TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
TELEPHONY_SERVICE);
getDeviceId()
将返回唯一的设备ID
String deviceId = telephonyManager.getDeviceId();
顺便说一下,这需要android.permission.READ\u PHONE\u STATE的许可
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(字符串令牌)方法,并生成令牌,该令牌是您的设备令牌或FCM令牌。FireBaseInstanceId已被弃用,并表示使用FirebaseMessaging检索FCM令牌。 具体而言,该方法的工作方式如下:
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
}
不幸的是,这不起作用,这是我们已经尝试过的方法之一。即使在第一次安装和运行时,令牌始终返回空值。请尝试卸载应用程序,然后再次安装,并确保从项目控制台获得最新的google-services.json。不幸的是,这不起作用,这是我们已经尝试过的方法之一。即使在第一次安装和运行时,令牌始终返回空值。我们刚刚尝试过这个。有一条警告,READ_PHONE_状态仅为系统应用保留。运行应用程序时忽略此选项会导致应用程序在启动时崩溃。