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



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

我们不清楚如何获得用户设备的令牌,用于推送通知目的。

有人可以澄清如何在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

因此,为了生成令牌,我不认为必须扩展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

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 manifest文件中:

<service
        android:name=".MyFirebaseMessagingService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>

当你的应用程序第一次安装和打开时,MyFirebaseMessagingService创建和onNewToken(字符串令牌)方法调用和令牌生成,这是你的设备令牌或FCM令牌。

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

TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
                TELEPHONY_SERVICE);

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

String deviceId = telephonyManager.getDeviceId();

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

相关内容

  • 没有找到相关文章

最新更新