ReceivedRemoteNotification и DidReceiveRemoteNotification никогда не вызывают - PullRequest
0 голосов
/ 25 октября 2018

Мы реализовали удаленные push-уведомления в нашем приложении.Мы хотели бы добиться того, чтобы, когда наше приложение находилось в фоновом режиме, входило удаленное уведомление, пользователь нажимал на уведомление, а мы выполняли некоторые задачи на основе информации уведомления.Я заметил, что когда приложение находилось в фоновом режиме, когда поступало уведомление, в Appdelegate никогда не вызывались DidReceiveRemoteNotification и ReceivedRemoteNotification.Я не могу получить уведомление от userInfo.Кто-нибудь сталкивался с этой проблемой?Это ошибка?Любая помощь с благодарностью!

Спасибо, Личан

1 Ответ

0 голосов
/ 25 октября 2018

Убедитесь, что вы тестируете на реальном устройстве.Вы должны иметь это в вашем info.plist:

<key>UIBackgroundModes</key>
<array>
  <string>remote-notification</string>
</array>

и это в вашем Entitlements.plist:

<dict>
  <key>aps-environment</key>
  <string>development</string>
</dict>

Пусть ваш класс AppDelegate реализует этот интерфейс: IUNUserNotificationCenterDelegate.

Попробуйте добавить это и посмотреть, будет ли он вызван:

    [Export("userNotificationCenter:willPresentNotification:withCompletionHandler:")]
    public void WillPresentNotification(UNUserNotificationCenter center, 
                           UNNotification notification, 
                           Action<UNNotificationPresentationOptions> completionHandler)
    {
        completionHandler?.Invoke(UNNotificationPresentationOptions.Alert);
    }

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

Кроме того, на портале для разработчиков Apple убедитесь, что вы либо добавили что-то для Ключи или сертификат Apple Push Services , и у вас есть сертификат в профиле обеспечения, который подписывает приложение.

...