Устройство не получает push-уведомления в Xamarin.ios - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь реализовать приложение с push-уведомлениями, используя Firebase, но приложение не получает никаких уведомлений от сервера (метод не был вызван)

my AppDelegate.cs

public class AppDelegate : UIApplicationDelegate , IUNUserNotificationCenterDelegate, IMessagingDelegate 
{
    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        App.Configure();

        if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
        {
            var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
            UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) => {
                Console.WriteLine(granted);
            });
        }
        else
        {
            var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
            var settings = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
        }

        UIApplication.SharedApplication.RegisterForRemoteNotifications();

        UNUserNotificationCenter.Current.Delegate = this;
        Messaging.SharedInstance.Delegate = this;

        Messaging.SharedInstance.ShouldEstablishDirectChannel = true;

        Firebase.InstanceID.InstanceId.Notifications.ObserveTokenRefresh((sender, e) => {
            var newToken = Firebase.InstanceID.InstanceId.SharedInstance.Token;
            System.Diagnostics.Debug.WriteLine(newToken);
        });

        return true;
    }

    public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
    {
        Console.WriteLine("Registered for remote notifications");
        Console.WriteLine(deviceToken.GetBase64EncodedString(NSDataBase64EncodingOptions.None));
        Console.WriteLine(deviceToken);
    }

    [Export("messaging:didReceiveMessage:")]
    public void DidReceiveMessage(Messaging messaging, RemoteMessage remoteMessage)
    {
        Console.WriteLine("iOS 11 Foreground");
    }

   [Export("userNotificationCenter:DidReceiveRemoteNotification:withCompletionHandler:")]
    public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        Console.WriteLine("Received a notficaiton");
        completionHandler(UIBackgroundFetchResult.NewData);
    }

    [Export("userNotificationCenter:willPresent:withCompletionHandler:")]
    public void WillPresent(UNUserNotificationCenter center, UNNotification notification, Action<UNNotificationPresentationOptions> completionHandler)
    {
        Console.WriteLine("Handling iOS 11 foreground notification");
        completionHandler(UNNotificationPresentationOptions.Sound | UNNotificationPresentationOptions.Alert);
    }

    [Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")]
    public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action completionHandler)
    {
        completionHandler();
    }

    public void ApplicationReceivedRemoteMessage(RemoteMessage remoteMessage)
    {
    }

enter image description here

Файл p12 уже загружен, а флажок «Включить push-уведомления» уже установлен.Чего не хватает в моем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...