【问题标题】:Firebase.initializeApp(); and FirebaseMessaging.instance.getToken() throws android native exceptionsFirebase.initializeApp();和 FirebaseMessaging.instance.getToken() 抛出 android 本机异常
【发布时间】:2022-08-14 13:34:37
【问题描述】:

我正在使用 FlutterFire Cli 配置我的 firebase 项目 它工作正常,我没有更改任何一行代码 我在 google play 上有一个在线版本的应用程序

然后部署的版本停止工作并在调试后 它会在应用程序尝试初始化 firebase 项目或 getToken 的任何时候开始显示 Failed to get FIS auth token

E/FirebaseMessaging(31532):     at com.google.android.gms.tasks.Tasks.zza(com.google.android.gms:play-services-tasks@@18.0.1:5)
E/FirebaseMessaging(31532):     at com.google.android.gms.tasks.Tasks.await(com.google.android.gms:play-services-tasks@@18.0.1:8)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.GmsRpc.setDefaultAttributesToBundle(GmsRpc.java:260)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.GmsRpc.startRpc(GmsRpc.java:222)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.GmsRpc.getToken(GmsRpc.java:180)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.FirebaseMessaging.lambda$blockingGetToken$10$FirebaseMessaging(FirebaseMessaging.java:610)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.-$$Lambda$FirebaseMessaging$1AYfBMlbEOJoTvXNS_TEZqpK2SY.start(Unknown Source:6)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.RequestDeduplicator.getOrStartGetTokenRequest(RequestDeduplicator.java:67)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.FirebaseMessaging.blockingGetToken(FirebaseMessaging.java:606)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.FirebaseMessaging.lambda$getToken$4$FirebaseMessaging(FirebaseMessaging.java:392)
E/FirebaseMessaging(31532):     at com.google.firebase.messaging.-$$Lambda$FirebaseMessaging$m5Uvt0n8P9zrx-ecASLTQKzoABQ.run(Unknown Source:4)
E/FirebaseMessaging(31532):     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
E/FirebaseMessaging(31532):     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/FirebaseMessaging(31532):     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
E/FirebaseMessaging(31532):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/FirebaseMessaging(31532):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/FirebaseMessaging(31532):     at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@18.0.0:2)
E/FirebaseMessaging(31532):     at java.lang.Thread.run(Thread.java:919)
E/FirebaseMessaging(31532): Caused by: com.google.firebase.installations.FirebaseInstallationsException: Firebase Installations Service is unavailable. Please try again later.
E/FirebaseMessaging(31532):     at com.google.firebase.installations.remote.FirebaseInstallationServiceClient.createFirebaseInstallation(FirebaseInstallationServiceClient.java:153)
E/FirebaseMessaging(31532):     at com.google.firebase.installations.FirebaseInstallations.registerFidWithServer(FirebaseInstallations.java:530)
E/FirebaseMessaging(31532):     at com.google.firebase.installations.FirebaseInstallations.doNetworkCallIfNecessary(FirebaseInstallations.java:385)
E/FirebaseMessaging(31532):     at com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationOrRefresh$2$FirebaseInstallations(FirebaseInstallations.java:374)
E/FirebaseMessaging(31532):     at com.google.firebase.installations.-$$Lambda$FirebaseInstallations$VZq1h0TBcWNH8Y5yY86ujrFFyLo.run(Unknown Source:4)
E/FirebaseMessaging(31532):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/FirebaseMessaging(31532):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/FirebaseMessaging(31532):     ... 1 more
Lost connection to device 

我在用着

firebase_core:^1.20.0 firebase_messaging:^12.0.1

完成 Flutter Clean 并删除构建文件夹后,它显示

error when communicating with firebase installation , server api , Http response [ 403 forbidden: 

虽然我没有使用任何 vpn

我尝试了许多解决方案,例如通过 flutterfire 创建新的 firebase 项目,但仍然显示相同的错误

任何解决方案?谢谢

  • 您可以尝试使用旧版本的 Firebase_core 包。我从中得到了解决方案。
  • 另外,请确保在项目的 pubspec.lock 文件中更改了版本。
  • @RenikShiroya 如何确保?我通常会做 flutter clean 和 pub get 就够了吗?
  • 不,当您更改版本并运行 flutter pub get 时。之后,请检查 pubspec.lock 中 Firebase_core 的版本,因为有时仍然存在旧版本
  • @AliIzadyar 我在叙利亚,我可以在尝试了很多之后告诉你……现在禁止 android 设备在没有 vpn 的情况下首次获取令牌……这个问题已经出现了 3 天……所以我认为我们无能为力关于那个

标签: android flutter firebase


【解决方案1】:

我发现了这个问题。我住在叙利亚,禁止拨打getToken首次没有 VPN,至少对于 Android 设备。

【讨论】:

    【解决方案2】:

    当 firebase 的依赖项之一过期时,就会发生这种情况。您应该在 pubspec.yaml 中将所有 firebase 软件包更新为最新版本。 (如果您不需要使用特定版本进行部署)。 您可以在 pub.dev 上查看最新版本

    【讨论】:

    • 我已经更新了所有的包..没有任何改变假设它会工作..那么我应该对部署的版本做什么?
    • 也许这篇文章可以帮助你,因为它已经解决了这个问题! stackoverflow.com/questions/60635672/…
    • 在这篇文章中没有提到如何在颤振应用程序中解决这个问题之前,我已经看过这篇文章
    【解决方案3】:

    Firebase SDK 依赖于新的内部基础设施服务,自 February 27 2020 以来称为 FIS(Firebase 安装服务),现在需要连接到此 API 以注册客户端的设备并获取令牌。 因此,Firebase 将请求这样的事情 (https://firebaseinstallations.googleapis.com/v1/projects/$project_identifier/installations/?key=$api_key) 这样做。 经过调查,您可以看到此过程由 google-play-services 完成并从 Firebase-Plugin 调用,如下所示:

    https://github.com/firebase/firebase-android-sdk/blob/c6cc8c5d4a00518033a6f281486c9610b821e1c4/firebase-messaging/src/main/java/com/google/firebase/messaging/GmsRpc.java#L260

    因此,我认为如果您可以编辑插件以将请求发送到代理服务器然后发送到 FIS API,您就可以解决这个问题。

    不幸的是,我可以确认 FIS API 现在在叙利亚出现 403 错误。

    希望谷歌尽快解决这个问题...

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 2013-06-23
      • 1970-01-01
      • 2012-09-30
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多