Xamarin Android的FirebaseInstanceId.Instance.Token抛出错误而不是返回FCM令牌

时间:2017-10-11 01:37:05

标签: c# firebase push-notification xamarin.android firebase-cloud-messaging

我正在关注如何将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注册令牌?

1 个答案:

答案 0 :(得分:2)

令人惊讶的是,我主要不得不撤消我为修复问题而做出的一些待定更改,然后清理并构建解决方案。我还在主要活动中添加了FirebaseApp.InitializeApp(this)