Почему мое приложение Xamarin.iOS не получает push-уведомления от Google Firebase? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь использовать Google Firebase для отправки push-уведомлений в приложение Xamarin Forms для iOS ... Я не получаю уведомления

Для отправки уведомлений я просто копирую токенмоего окна вывода, помещая мое приложение в фоновый режим и вставляя токен в построитель уведомлений Firebase.

Я получаю токен FCM, так что мое приложение определенно общается с Firebase.

Пока что я пробовал:

  • Отзыв моих сертификатов разработчика Apple и создание профиля, а затем создание новых.

  • Я создал новый проект Firebase и включил новый файл GoogleService-Info.plist (Build action -> BundleResource) .. Я не думал, что это что-нибудь сделает

  • с включенными удаленными уведомлениямив фоновом режиме моего info.plist

Любые предложения приветствуются, пожалуйста!

    public override bool FinishedLaunching(UIApplication app, NSDictionary 
    options)
    {   

        global::Xamarin.Forms.Forms.Init();

        UIApplication.SharedApplication.RegisterForRemoteNotifications();

        Firebase.Core.App.Configure();

        _connection = DependencyService.Get<ISQLiteDb>().GetConnection();

        LoadApplication(application: new V5KitchenApp.App());



        // Register your app for remote notifications.
        if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
        {
            // iOS 10 or later
            var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
            UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) => {
                Console.WriteLine(granted);
                var token = Messaging.SharedInstance.FcmToken ?? "";
                Console.WriteLine($"FCM token: {token}");
                SendTokenToServer(token);
            });

            // For iOS 10 display notification (sent via APNS)
            UNUserNotificationCenter.Current.Delegate = this;

            // For iOS 10 data message (sent via FCM)
            Messaging.SharedInstance.Delegate = this;
        }
        else
        {
            // iOS 9 or before
            var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
            var settings = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
        }

        return base.FinishedLaunching(app, options);
    }

Вот как я переопределяю DidReceiveRemoteNotification

    public override void DidReceiveRemoteNotification(
    UIApplication application,
    NSDictionary userInfo,
    Action<UIBackgroundFetchResult> completionHandler)
    {
        PresentNotification(userInfo);
        completionHandler(UIBackgroundFetchResult.NewData);
    }

Ивот как я представляю уведомление

    void PresentNotification(NSDictionary dict)
    {
        NSDictionary aps = dict.ObjectForKey(new NSString("aps")) as NSDictionary;
        var msg = string.Empty;
        if (aps.ContainsKey(new NSString("alert")))
        {
            msg = (aps[new NSString("alert")] as NSString).ToString();
        }

        if (string.IsNullOrEmpty(msg))
        {
            msg = "(unable to parse)";
        }

        MessagingCenter.Send<object, string>(this, App.NotificationReceivedKey, msg);
    }

Я использую Xamarin.Firebase.iOS.CloudMessaging v3.1.2 Xamarin.Firebase.iOS.Core v5.1.8 Xamarin.Firebase.iOS.InstanceID v2.0.0

1 Ответ

0 голосов
/ 12 июня 2019

Проблема в версиях Firebase. Я использовал следующие версии:

Xamarin.Firebase.iOS.InstanceID 2.0
Xamarin.Firebase.iOS.CloudMessaging 2.0
Xamarin.Firebase.iOS.Core 4.0.3
Xamarin.Firebase.iOS.Analtics 4.0.2
...