什么是不推荐使用的FirebaseInstancedService和OnTokenRefresh的替代方案?

什么是不推荐使用的FirebaseInstancedService和OnTokenRefresh的替代方案?,firebase,xamarin,xamarin.android,firebase-cloud-messaging,Firebase,Xamarin,Xamarin.android,Firebase Cloud Messaging,我注意到FirebaseInstancedService已被弃用,您能告诉我我是否正确设置了FirebaseIID服务和Firebase消息服务吗?-谢谢你的时间 我现在扩展FireBaseMessagingService并调用OnNewToken方法,MyFirebaseIIDService中的代码如下所示: [Service] [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })] class MyFirebaseIID

我注意到FirebaseInstancedService已被弃用,您能告诉我我是否正确设置了FirebaseIID服务和Firebase消息服务吗?-谢谢你的时间

我现在扩展FireBaseMessagingService并调用OnNewToken方法,MyFirebaseIIDService中的代码如下所示:

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
class MyFirebaseIIDService : FirebaseMessagingService
{
const string TAG = "MyFirebaseIIDService";
NotificationHub hub;

public override void OnNewToken(string refreshedToken)
{
    base.OnNewToken(refreshedToken);
    Preferences.Set("notification_token", refreshedToken);
    Log.Debug(TAG, "FCM token: " + refreshedToken);
    SendRegistrationToServer(refreshedToken);
}

void SendRegistrationToServer(string token)
{
    // Register with Notification Hubs
    hub = new NotificationHub(Parameter.NotificationHubName,
                              Parameter.ListenConnectionString, this);

    var tags = GetEnabledCategories();
    var regID = hub.Register(token, tags.ToArray()).RegistrationId;
}
 [Service]
 [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
 class MyFirebaseMessagingService : FirebaseMessagingService
{
const string TAG = "MyFirebaseMsgService";
public const string NOTIFICATION_CHANNEL = "us.henrico.gov";
public override void OnMessageReceived(RemoteMessage message)
{
    if (message.GetNotification() != null)
    {
        // Notification payload, not in use, wouldn't trigger this function when in background
        SendNotification(message.GetNotification().Title, message.GetNotification().Body, message.Data["linktype"], message.Data["linkpage"]);
    }
    else
    {
        // Data payload, triggers this function in foreground or background
        SendNotification(message.Data["title"], message.Data["body"], message.Data["linktype"], message.Data["linkpage"]);
    }

}
MyFirebaseMessagingService中的代码如下所示:

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
class MyFirebaseIIDService : FirebaseMessagingService
{
const string TAG = "MyFirebaseIIDService";
NotificationHub hub;

public override void OnNewToken(string refreshedToken)
{
    base.OnNewToken(refreshedToken);
    Preferences.Set("notification_token", refreshedToken);
    Log.Debug(TAG, "FCM token: " + refreshedToken);
    SendRegistrationToServer(refreshedToken);
}

void SendRegistrationToServer(string token)
{
    // Register with Notification Hubs
    hub = new NotificationHub(Parameter.NotificationHubName,
                              Parameter.ListenConnectionString, this);

    var tags = GetEnabledCategories();
    var regID = hub.Register(token, tags.ToArray()).RegistrationId;
}
 [Service]
 [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
 class MyFirebaseMessagingService : FirebaseMessagingService
{
const string TAG = "MyFirebaseMsgService";
public const string NOTIFICATION_CHANNEL = "us.henrico.gov";
public override void OnMessageReceived(RemoteMessage message)
{
    if (message.GetNotification() != null)
    {
        // Notification payload, not in use, wouldn't trigger this function when in background
        SendNotification(message.GetNotification().Title, message.GetNotification().Body, message.Data["linktype"], message.Data["linkpage"]);
    }
    else
    {
        // Data payload, triggers this function in foreground or background
        SendNotification(message.Data["title"], message.Data["body"], message.Data["linktype"], message.Data["linkpage"]);
    }

}

由于FirebaseInstanceId已贬值,您可以使用

  FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
        System.out.println("Token : "+ task.getResult());
    });

由于FirebaseInstanceId已贬值,您可以使用

  FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
        System.out.println("Token : "+ task.getResult());
    });

这回答了你的问题吗?这回答了你的问题吗?