【发布时间】:2018-03-22 13:12:25
【问题描述】:
我正在关注一些关于如何将 Firebase 连接到 Xamarin Android 应用以使用推送通知的教程(见下文)。我的团队已经让它工作了,但是在让 iOS 工作并返回到 Android 推送通知之后,我注意到它有问题。
这是有问题的部分:
private string GetFirebaseInstanceId()
{
FirebaseApp.InitializeApp(this);
var FCMToken = FirebaseInstanceId.Instance.Token;
if (string.IsNullOrEmpty(FCMToken))
{
return null;
}
Log.Debug(Tag, $"FCM Registration Token: {FCMToken}");
return FCMToken;
}
尝试获取令牌时,我收到此错误“Java.Lang.IllegalStateException:默认 FirebaseApp 未在此进程 {packageName} 中初始化。请务必先调用 FirebaseApp.initializeApp(Context)。”
这就是我在尝试获取令牌之前添加 FirebaseApp.InitializeApp(this) 的原因,但它没有任何区别。我也尝试在 Spash 活动和 Main 活动中执行此操作,但没有解决问题。
我还确定了 google-services.json 的构建操作是 GoogleServicesJson。
至于我所做的代码更改,以下是我认为可能相关的一些值得注意的更改:
- 在清单中添加了更多权限,因此地图在从 Play 商店安装后不会显示为空白的灰色矩形。
- Resource.Designer.cs 发生了变化,所以我签入了。
我检查了包含上述片段的文件的历史记录,它的特定方法没有改变。
这是我遵循的一些教程:
如何正确检索 FCM 注册令牌?
【问题讨论】:
-
你的
AndroidManifest.xml是什么? -
@York Shen - MSFT 我添加了使用 Google 原生地图和 Firebase 推送通知的权限。我已经解决了这个问题;请在下面查看我的答案。
标签: c# firebase push-notification xamarin.android firebase-cloud-messaging