我已经明确遵循以下链接来实现推送通知,并且在从 Android 模拟器中单击“注册”时,我从类 DeviceInstallationService 中收到以下错误消息:
错误:无法解析 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);
}
关于如何解决此问题有任何提示吗?
您需要使用
FirebaseMessaging
类来获取令牌。可以使用以下代码生成令牌:
var token = FirebaseMessaging.Instance.GetToken();
关于Firebase InstanceId,官方文档是这样说的:
此类 FirebaseInstanceId 已弃用。 Firebase 实例 ID 已替换为应用实例标识符的 FirebaseInstallations 和 FCM 注册令牌的 FirebaseMessaging.getToken()。
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();
}