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



我已经清楚地遵循下面的链接实现推送通知,而点击注册从android模拟器我得到下面的错误信息从类DeviceInstallationService:

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

错误:无法解析FCM的令牌

我所做的唯一改变是使用firebaseinstallation而不是FirebaseInstanceId,因为它说FirebaseInstanceId。实例已贬值。

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);
}

有什么提示如何解决这个问题吗?

您需要使用FirebaseMessagingclass来获取令牌。可以使用以下代码生成令牌:

var token = FirebaseMessaging.Instance.GetToken();

关于Firebase InstanceId,这是官方文件所说的:

该类FirebaseInstanceId已弃用。Firebase实例ID已被替换为firebaseinstallation用于应用实例标识符,FirebaseMessaging.getToken()用于FCM注册令牌。

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();