【问题标题】:How to fix SERVICE_NOT_AVAILABLE error in firebase cloud messaging while getting token如何在获取令牌时修复 Firebase 云消息传递中的 SERVICE_NOT_AVAILABLE 错误
【发布时间】:2021-06-23 16:41:46
【问题描述】:

我正在尝试获取 fcm 令牌并将其存储在 Cloud Firestore 中:

val user = User(et_email_sign_up_activity.text.toString(), et_name_sign_up_activity.text.toString(),
                            et_mobile_sign_up_activity.text.toString(), "",
                        FirebaseAuth.getInstance().currentUser?.uid!!, tv_address.text!!.toString(), getToken())
                    Firebase().uploadUserSignIn(user, this)//uploads user to cloud firestore

getToken():

private fun getToken(): String{
        var token = ""
        FirebaseMessaging.getInstance().token.addOnSuccessListener {
            token = it
            Log.i("token", it)
        }.addOnFailureListener {
            val dialog = AlertDialog.Builder(this)
            dialog.setMessage(it.toString())
            dialog.show()
        }
        return token
    }

每当我尝试在真正的 android 设备中执行我的代码时,我总是会收到此错误:

E/FirebaseMessaging: Topic sync or token retrieval failed on hard
failure exceptions: java.util.concurrent.ExecutionException:
java.io.IOException: SERVICE_NOT_AVAILABLE. Won't retry the operation.

我有 google play 服务在正确的互联网连接下运行

我尝试过的几个解决方案:

  1. 在清单中添加 Internet 权限:
  2. 输入 sha1 和 sha256 后从 firebase 下载 google.json 文件
  3. 在谷歌云中启用安卓设备验证。

有时我没有收到错误并成功返回 fcm 令牌,但大多数时候我收到此错误。

什么是错误?

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案1】:

    即使我面临同样的问题,当您的设备由于某种原因无法与 FCM 通信时,也会出现此问题。您可以执行以下检查以使其正常工作:

    1. 检查您与设备的互联网连接
    2. 在移动数据和 wifi 之间切换,反之亦然
    3. 设备日期时间应该是正确的。
    4. 尝试清理缓存。
    5. 杀死应用程序并重新启动它。

    【讨论】:

    • 我已经完成了所有的步骤。我认为是设备问题。我可以在不同的设备上运行该应用程序而不会出现任何错误
    • 我花了 3 个小时搜索错误在哪里,直到我看到,我的设备日期时间晚了 1 年。谢谢!!
    猜你喜欢
    • 2019-12-15
    • 2022-08-19
    • 2018-06-25
    • 2021-02-18
    • 2016-11-21
    • 1970-01-01
    • 2022-12-03
    • 2019-04-05
    相关资源
    最近更新 更多