Как получить полезную нагрузку уведомления, когда приложение не работает в фоновом режиме в IOS - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть вопрос.Можно ли получить тело уведомления при открытии приложения из уведомления, даже если приложение не работает в фоновом режиме.Он полностью убит.

1 Ответ

0 голосов
/ 07 февраля 2019

Вам нужно будет обрабатывать уведомление по-разному в зависимости от того, в каком состоянии находится ваше приложение, когда оно получено:

Если ваше приложение не запущено и пользователь запускает его, нажав на push-уведомление, push-уведомлениеуведомление передается вашему приложению в launchOptions application(_:didFinishLaunchingWithOptions:).

Если ваше приложение работало либо на переднем плане, либо в фоновом режиме, система уведомляет ваше приложение, вызывая application(_:didReceiveRemoteNotification:fetchCompletionHandler:).Если пользователь открывает приложение, нажав push-уведомление, iOS может вызвать этот метод еще раз, чтобы вы могли обновить пользовательский интерфейс и отобразить соответствующую информацию.

Добавьте следующий код в конец application(_:didFinishLaunchingWithOptions:) непосредственно передоператор возврата:

// Check if launched from notification
let notificationOption = launchOptions?[.remoteNotification]

// 1
if let notification = notificationOption as? [String: AnyObject],
  let aps = notification["aps"] as? [String: AnyObject] {

  // 2
  print(aps)

}

Чтобы обработать другой случай для получения push-уведомлений, добавьте следующий метод в AppDelegate:

func application(
  _ application: UIApplication,
  didReceiveRemoteNotification userInfo: [AnyHashable: Any],
  fetchCompletionHandler completionHandler:
  @escaping (UIBackgroundFetchResult) -> Void
) {
  guard let aps = userInfo["aps"] as? [String: AnyObject] else {
    completionHandler(.failed)
    return
  }
  print(aps)
}
...