Xamarin.iOS Xamarin.Android 中“FirebaseMessaging.Instance.GetToken”方法的对应方法

Xamarin.iOS counterpart of `FirebaseMessaging.Instance.GetToken` method in Xamarin.Android

我正在开发具有推送通知功能的 Xamarin.Forms 应用程序(使用 Firebase)。

为了获得 Android 的令牌,我使用了:

public async Task<string> GetTokenAsync()
{
    var t = await FirebaseMessaging.Instance.GetToken();
    return t.ToString();
}

要获取 iOS 的令牌,我使用了:

public Task<string> GetTokenAsync() => Task.FromResult(Messaging.SharedInstance.FcmToken);

问题

Messaging.SharedInstance.FcmToken 将 return null 如果没有可用的令牌并且不启动请求令牌。

问题

Xamarin.iOS中的FirebaseMessaging.Instance.GetToken()方法等同于什么?

谢谢。

  1. 使 AppDelegate 实现 IMessagingDelegate .

    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate , IMessagingDelegate
    
  2. Messaging.SharedInstance.Delegate 设置为 this .

    Messaging.SharedInstance.Delegate = this;
    
  3. DidReceiveRegistrationToken 方法获取令牌。

    [Export("messaging:didReceiveRegistrationToken:")]
    public void DidReceiveRegistrationToken(Messaging messaging, string fcmToken)
    {
        Console.WriteLine($"DEBUG: Firebase registration token: {fcmToken}");
    }
    

参考

https://github.com/xamarin/GoogleApisForiOSComponents/issues/418.

https://social.msdn.microsoft.com/Forums/en-US/3f4e61ad-fcd7-444f-9e8a-2ac50bfffa92/fcm-on-ios-messagingsharedinstancefcmtoken-empty-when-app-first-installsruns?forum=xamaringeneral.