【问题标题】:Xamarin FirebaseApp.InitializeApp(this) returns null in 60.1142.1Xamarin FirebaseApp.InitializeApp(this) 在 60.1142.1 中返回 null
【发布时间】:2018-11-14 00:05:40
【问题描述】:

我查看了网上关于这个错误的所有问题。

我已经添加了我的 google-services.json 并选择了适当的构建操作。我已经尝试过清理和重建,但没有成功。我还尝试了解决其他版本中的错误的方法,例如在 csproj 文件中添加目标标记。我试过从 json 手动输入字符串。

无论我调用 FirebaseApp.InitializeApp(this) 做什么都会返回 null,当我尝试引用 FirebaseInstanceId.Instance.Token 时,我会遇到非常常见的异常:

Java.Lang.IllegalStateException:默认 FirebaseApp 未在此过程中初始化 请务必先调用 FirebaseApp.initializeApp(Context)。

Github 和 Xamarin 论坛说这已通过 60.1141.1 修复,但从未如此。我还检查了我的 csproj,以确保所有对 GoogleServices 的引用都是针对最新版本的。

我不知道为什么这不起作用,我真的很快就需要它来工作。如果可以的话,请帮忙。

我查看了以下资源但没有成功: Getting Exception Using Firebase in Xamarin Android https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm?tabs=vswin https://bugzilla.xamarin.com/show_bug.cgi?id=56108#c1 Default FirebaseApp is not initialized https://forums.xamarin.com/discussion/94464/firebase-cloud-messaging-app-not-initialized Xamarin.android Default FirebaseApp is not initialized in this process

还有更多我无法追踪。为什么这个版本还出现这个bug???

【问题讨论】:

    标签: firebase xamarin firebase-cloud-messaging google-play-services


    【解决方案1】:

    我遇到了同样的问题,经过一番调查后,我尝试以这种方式在 OnCreate 方法中手动启动它

    var options = new FirebaseOptions.Builder()
      .SetApplicationId("<AppID>")
      .SetApiKey("<APIKey>")
      .SetDatabaseUrl("https://<url>.firebaseio.com")
      .SetStorageBucket("*.appspot.com")
      .SetGcmSenderId("<senderID").Build();
      var fapp = FirebaseApp.InitializeApp(this, options);
    
      LoadApplication(App);
    
      PushNotificationManager.ProcessIntent(this, Intent);
    

    这对我有用,似乎构建过程“GoogleServiceJson”不起作用,应该这样做。 最好的祝福, 托马斯

    【讨论】:

    • 我正在使用 Plugin.FirebasePushNotification 并且遇到了这个问题,经过三天的头痛后,我使用了您的解决方案并且我的应用程序再次运行!谢谢!
    【解决方案2】:

    在我的问题中,包名不同。检查 AndroidManifest.xml 中的包名是否与 google-services.json 中的相同。

    【讨论】:

    • 问号有什么原因吗?你是说检查包名还是询问是否应该检查包名?
    • 请不要以使它们看起来像问题的方式编写答案。有一些系统可以检查 Not An Answer (NAA) 帖子。这个答案被其中一个人错误地接受了。请考虑对其进行编辑,使其看起来更像一个答案。
    【解决方案3】:

    我发现了我的问题!创建一个只有 Firebase 初始化的虚拟项目后,它运行良好(使用相同的 google-services.json)。这能够很好地初始化。

    比较项目后,我注意到以前的开发人员在名称“app_name”下的字符串中定义了应用程序名称。一旦我在“ApplicationName”下创建了另一个字符串,并让它与我的启动活动中的标签和我能够初始化的清单应用程序标签相匹配。

    此外,我的启动活动是继承 AppCompatActivity 而不是 Activity。在找到上述解决方案之前,我创建了一个继承活动的启动页面,这是我初始化 Firebase 的地方。不确定这是否是解决方案所必需的。

    【讨论】:

    • 我在 Xamarin 表单上遇到了同样的问题。你能解释一下关于 app_name 的更多信息吗 - 不知道我在 Xamarin 表单中的哪个地方检查了它
    • 所以我不确定这是否真的是现在的解决方案。我的虚拟项目(正在运行)在 Strings.xml 中有“ApplicationName”下的应用程序名称。虽然无法运行的项目在“app_name”下的应用程序名称 -> 来自以前的开发人员。一旦我将其更改为 ApplicationName,请确保此值等于启动 Activity 的标签,并且等于它工作的清单中的应用程序标签中的标签。但是,在虚拟项目中,一旦我在 Strings.xml 中更改了此值的名称,虚拟项目仍然有效。非常混乱。
    • 还应注意这些不是 Xamarin Forms 项目。
    • 我也面临这个问题。尝试了您的解决方案,但没有奏效,
    猜你喜欢
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多