Firebase 推送通知 - 在此过程中未初始化默认 FirebaseApp

问题描述

我正在努力在成熟的 MVVMcross 应用程序中实施 Google 的 Firebase 推送通知。我们被迫为当前的解决方案寻求新的解决方案,因为该功能似乎即将在 AppCenter 中弃用。

我们已经将代码放在 RootActivity 文件中(在方法底部

protected override void OnCreate(Bundle bundle)

当我在 Android galaxy 上的 USB/调试场景中运行该应用程序时,出现当前错误认 FirebaseApp 未在此过程中初始化”

我尝试使用错误消息中推荐的方法无济于事:

FirebaseApp.InitializeApp(RootActivity.Context);
FirebaseMessaging.Instance.GetToken().AddOnCompleteListener(new OnCompleteListener());
        

如果有人想知道这里是使用断点设置用于测试目的的上述方法代码

public class OnCompleteListener : java.lang.Object,IOnCompleteListener
        {
            public void OnComplete(Android.Gms.Tasks.Task task)
            {
                var token = task.Result.ToString();
            }
        }

我们最初在标准 Xamarin Forms Android 应用程序中对此进行了测试,并且在获取令牌方面没有任何问题,但是当我们在客户的 MVVMcross 应用程序中使用它时,我们遇到了问题。

我还想提一下,我也尝试了以下解决方案,但都没有运气:

var setupSingleton = MvxAndroidSetupSingleton.EnsureSingletonAvailable(Context);
setupSingleton.EnsureInitialized();
FirebaseMessaging.Instance.GetToken().AddOnCompleteListener(new OnCompleteListener());
        

解决方法

我发现我有两个问题。第一个是我的项目名称在我的清单和谷歌服务密钥中不匹配的事实。我使用的是我自己设置的用于测试的密钥。在我意识到这一点后,我切换回我客户的密钥并仔细检查它是否是构建的一部分。一旦我解决了这个问题,我发现我需要为 Xamarin.Google.Dagger 安装 nuget 包来解决反射问题。处理完这些之后,我进行了清理/重建并在我的 Galaxy S20 测试设备上运行了调试。此修复使我能够达到我为测试来自 FCM 的令牌接收而设置的测试断点。