问题描述
我正在努力在成熟的 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 的令牌接收而设置的测试断点。