在 OnRegistered 方法中向 NotificationHub 添加标签

Tom*_*zyk 1 c# xamarin azure-notificationhub xamarin.forms

在我成功登录后的应用程序中,我想使用标签注册到 NotificationHub,其中 Tag 是电子邮件地址。

以下场景在 iOS 上运行良好:

MessagingCenter.Subscribe<LoginViewModel, string>(this, MessagesId.RegisterForPush, (s, arg) =>
            {
                NSSet tags = new NSSet(arg); // create tags if you want
                Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) =>
                {
                    if (errorCallback != null)
                        Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
                });
            });
Run Code Online (Sandbox Code Playgroud)

但相当于 Android 抛出一个NetworkOnMainThreadException

MessagingCenter.Subscribe<LoginViewModel, string>(this, MessagesId.RegisterForPush, (s, arg) =>
        {
            var tags = new List<string>() { arg };

            try
            {
                var hubRegistration = Hub.Register(registrationId, tags.ToArray());
            }
            catch (Exception ex)
            {
                Log.Error(PushHandlerBroadcastReceiver.TAG, ex.Message);
            }
        });
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

Sus*_*ver 6

使用 a主 UI 线程Task.Run获取注册过程。

await Task.Run(() =>
{
   // your register code here...
});
Run Code Online (Sandbox Code Playgroud)