iOS отправляет локальное уведомление после получения тихого удаленного уведомления - PullRequest
0 голосов
/ 04 ноября 2019

Когда сервер отправляет молчаливое уведомление, я хочу проверить, находится ли пользователь в нужном состоянии, а затем выдать локальное уведомление в результате, если пользователь находится в нужном состоянии, или ничего не делать, если пользователь не находится вправильное состояние.

Возможно ли это?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Это не очень хорошая идея. Система обрабатывает фоновые уведомления как низкоприоритетные. доказательство: https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app

Так что фоновое уведомление не для вас. Если вы не хотите показывать уведомление для некоторых случаев, вы просто используете метод реализации UNUserNotificationCenterDelegate , не вызывайте обработчик завершения:

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
guard self.shouldShowNotification(notification) else { return } // don't call completion handler if we're don't want to show push
completionHandler(.alert)
}

func shouldShowNotification(_ notification: UNNotification) -> Bool {
  if ... {
    return true
  } else {
    return false
  }
}
0 голосов
/ 05 ноября 2019

Если вы отправите push-уведомление с помощью "content-available": 1, это будет тихий push-запрос (см. руководство Apple по локальным и удаленным уведомлениям ).

Затем вы захотите условно запланировать локальное уведомлениес UNUserNotificationCenter.current().add() и реализовать методы делегата для UNUserNotificationCenterDelegate.

...