首页 > 解决方案 > 如何使用 xamarin.android 在 Firebase 服务中再次检索 pns 句柄令牌

问题描述

我正在使用 Azure 通知中心在我的 xamarin.forms 应用程序中实现推送通知,遵循Microsoft 的文档。该实现工作正常,我能够在 android 和 ios 设备上接收通知。我正在测试一些用例,并在 Android 中遇到令牌检索问题,如果由于某种原因应用程序在设备注册到 Azure 通知中心之前崩溃。以下是我的 Firebase 服务代码。

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class FirebaseService : FirebaseMessagingService
{
    readonly AndroidHelper androidHelper = new AndroidHelper();
    public override void OnMessageReceived(RemoteMessage message)
    {
        base.OnMessageReceived(message);
        androidHelper.SendLocalNotification(message.Data);
    }

    //Send pns handle for device installation with Azure Notification Hub.
    public override void OnNewToken(string token)
    {
        PushNotifications.PNSHandle = token;
        // APP CRASH OCCURS
    }
}

每当生成令牌时,我都会将其存储在一个静态变量中,并稍后将其用于设备注册。

但由于 OnNewToken() 仅在安装后首次启动应用程序时运行。如果由于某种原因,假设我在将令牌分配给我的静态变量后立即崩溃,如上面 OnNewToken() 中的注释中所述,并且我重新启动应用程序,我不会再次获得该令牌。

任何人都可以在每次应用启动时再次帮助进行令牌检索或重新生成。搜索后,我从 xamarin 论坛发现了这篇文章,但无法得到我想要的东西。

标签: push-notificationxamarin.androidfirebase-cloud-messagingdevicetoken

解决方案


推荐阅读