gpt4 book ai didi

android - 少数设备未生成 FCM token

转载 作者:行者123 更新时间:2023-12-05 04:25:27 26 4
gpt4 key购买 nike

我正在使用 FirebaseInstanceId.getInstance().getToken() 方法生成设备 token 。我知道这种方法已被弃用,但我很想为该问题找到确切的 RCA。

当我在模拟器中使用此方法时,它工作正常并返回 token ,所有模拟器变体都在多个模拟器上尝试过。

我尝试使用 Android 手机进行调试,它正在返回设备 token 。但是我们的应用程序在 Zebra TC57 设备上运行,它无法正常工作,方法返回 null。这适用于某些设备,但不适用于某些设备。我有一台设备无法重现该问题安卓版本:8.1.0

我尝试检查 Google Play 服务版本PackageInfoCompat.getLongVersionCode(getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 )); 这将返回 17785019

我检查了 google play 商店包的可用性

PackageInfoCompat.getLongVersionCode(getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 )); this is giving package name `com.android.vending` translating to new GooglePlayStorePackageName. 

尝试了多个其他步骤,但无法找到确切的根本原因

最佳答案

该方法已被弃用是有原因的。只需使用新推荐的方法即可。

FCM 不保证这些 token 的生成。但是当它确实生成 token 时,您可以保证在 FCM 服务的 onNewToken 方法中获得新 token 。

class NotificationService: FirebaseMessagingService() {
override fun onNewToken(token: String) {
super.onNewToken(token)
}
}

文档摘录

/**

  • There are two scenarios when onNewToken is called:
    1. When a new token is generated on initial app startup
    1. Whenever an existing token is changed
  • Under #2, there are three scenarios when the existing token is changed:
  • A) App is restored to a new device
  • B) User uninstalls/reinstalls the app
  • C) User clears app data*/

您可以使用新方法在应用中的任何位置按需获取生成的 token 。如果初始生成成功,此方法将仅返回 token 。

fun tryGetToken() {
FirebaseMessaging.getInstance().getToken().addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w(FCM_TAG, "Fetching FCM registration token failed", task.exception)
return@addOnCompleteListener
}

fcmToken = task.result
Log.d(FCM_TAG, "FCM fetch success $fcmToken")
}

关于android - 少数设备未生成 FCM token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73256359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com