如何获取推送通知的 Android 设备令牌?

Dav*_*veo 7 android firebase firebase-cloud-messaging

我们已经浏览了各种 Stackoverflow 问题和答案,并查看了文档和文章,但我们尝试过的所有方法(例如 FireBaseInstanceId 和扩展 FirebaseMessagingService)都会导致空令牌。

目前尚不清楚我们如何获取用户设备的令牌以用于推送通知。

有人可以澄清一下 2021 年我们如何获取用户的设备令牌吗?

谢谢

小智 5

FireBaseInstanceId 已弃用,文档称使用 FirebaseMessaging 检索 FCM 令牌。特别是getToken()方法的工作方式如下:

Returns the FCM registration token for this Firebase project. This creates a Firebase Installations ID, if one does not exist
Run Code Online (Sandbox Code Playgroud)

因此,为了生成令牌,我认为不必扩展 FirebaseMessagingService,只需在您想要的任何地方这样调用它即可

FirebaseMessaging.getInstance().token.addOnCompleteListener {
        if (!it.isSuccessful) {
            return@addOnCompleteListener
        }
        val token = it.result //this is the token retrieved
    }
Run Code Online (Sandbox Code Playgroud)


Saj*_*ith -1

通过这种方式你可以获得唯一的设备ID

TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
                TELEPHONY_SERVICE);
Run Code Online (Sandbox Code Playgroud)

getDeviceId()将返回唯一的设备 ID。

String deviceId = telephonyManager.getDeviceId();
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这需要许可android.permission.READ_PHONE_STATE