在为 Xamarin 实现推送通知时无法解析 FCM 的令牌

问题描述 投票:0回答:2

我已经明确遵循以下链接来实现推送通知,并且在从 Android 模拟器中单击“注册”时,我从类 DeviceInstallationService 中收到以下错误消息:

https://learn.microsoft.com/en-us/azure/developer/mobile-apps/notification-hubs-backend-service-xamarin-forms

错误:无法解析 FCM 的令牌

我所做的唯一更改是使用 FirebaseInstallations 而不是 FirebaseInstanceId,因为它表示 FirebaseInstanceId.Instance 已折旧。

protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        Bootstrap.Begin(() => new DeviceInstallationService());

        Firebase.FirebaseApp.InitializeApp(Application.Context);

        if (DeviceInstallationService.NotificationsSupported)
        {
            FirebaseInstallations.GetInstance(Firebase.FirebaseApp.Instance).GetId();
            //FirebaseInstanceId.Instance. GetInstance(Firebase.FirebaseApp.Instance)
            //    .GetInstanceId()
            //    .AddOnSuccessListener(this);
        }

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());

        ProcessNotificationActions(Intent);
    }

关于如何解决此问题有任何提示吗?

firebase xamarin xamarin.forms push-notification firebase-cloud-messaging
2个回答
0
投票

您需要使用

FirebaseMessaging
类来获取令牌。可以使用以下代码生成令牌:

var token = FirebaseMessaging.Instance.GetToken();

关于Firebase InstanceId,官方文档是这样说的:

此类 FirebaseInstanceId 已弃用。 Firebase 实例 ID 已替换为应用实例标识符的 FirebaseInstallations 和 FCM 注册令牌的 FirebaseMessaging.getToken()。


0
投票
protected override void OnCreate(Bundle savedInstanceState)
{

FirebaseOptions baseOptions = FirebaseOptions.FromResource(Android.App.Application.Context);
FirebaseOptions options = new FirebaseOptions.Builder(baseOptions).SetProjectId(baseOptions.StorageBucket.Split('.')[0]).Build();
FirebaseApp.ClearInstancesForTest();
FirebaseApp app = FirebaseApp.InitializeApp(Android.App.Application.Context, options);
var refreshedToken = await FirebaseMessaging.Instance.GetToken();

}

© www.soinside.com 2019 - 2024. All rights reserved.