Push-уведомление получено, но фоновая выборка не вызывается с тегом pn_apns при отправке сообщения чата PubNub. - PullRequest
2 голосов
/ 29 марта 2019

Я установил модуль чата в своем приложении, используя сервис PubNub, а не подсистему чата PubNub.Все работает нормально, пока не появятся push-уведомления.Это приложение имеет версию Android (не построен мной).Мне удалось получить полнофункциональное Apple Push Notification, используя payload1 , упомянутый ниже.Но это работает только для устройств iOS с точки зрения уведомлений, никаких уведомлений для устройств Android, для которых добавлен GCM для уведомлений.

Так что я сделал несколько RND и нашел Link и использовал Полезная нагрузка2 упоминается ниже.Благодаря этому обе платформы получают уведомления.Но теперь в iOS уведомление приходит как на переднем плане, так и в фоновом состоянии приложения.но все перечисленные ниже методы не вызывают, теперь вызывается только один метод - willPresent на переднем плане.Я хочу знать, почему это так.Что-то не так с Payload или Tag или как?Пожалуйста, помогите мне, борясь за это за неделю.Заранее спасибо.

payload1 = [
            "aps" : [
                "alert" : [
                    "title" : self.loginUserProfile.firstName,
                    "body" : message],
                "pn_exceptions" : [
                    tokenString
                ],
                "content-available": 1,
                "sound" : "marco_alert.aiff",
                "publisher" : self.loginUserProfile.userId,
                "date" : Date().dateString()]
            ] as [String : Any]
payload2 = [
            "pn_apns":
                [
                    "date": Date().dateString(),
                    "aps":
                        [
                            "sound": "marco_alert.aiff",
                            "alert":
                                [
                                    "title": self.loginUserProfile.firstName,
                                    "body": message
                            ],
                    ],
                    "pn_exceptions": [tokenString],
                    "publisher": self.loginUserProfile.userId,
                    "content-available": 0
            ],
            "pn_gcm": [
                "data": messageString
            ]] as [String : Any]

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

И

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) 

И

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)```

1 Ответ

1 голос
/ 01 апреля 2019

@ Ahsan Я хочу убедиться, что я понимаю поведение, которое вы описываете: уведомления, отправляемые через PubNub с использованием вышеуказанных полезных данных, работают на Android и на iOS, когда приложение находится в фоновом режиме. Но когда приложение iOS находится на переднем плане, уведомления вызывают только func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)?

Если это так, ожидаемое поведение push-уведомлений Apple iOS, как описано в официальных документах Apple iOS. Исторически push-уведомления предназначались для действий вне активного использования приложений, поэтому этот документированный метод является новым механизмом взаимодействия с push-уведомлениями, когда приложение активно.

У Apple есть диаграмма, поясняющая, как реагировать на этот метод делегата и заставить уведомление представлять пользователю.

Вы также можете посмотреть UNNotificationPresentationOptions, чтобы узнать о доступных вариантах здесь.

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