Вам нужно будет обрабатывать уведомление по-разному в зависимости от того, в каком состоянии находится ваше приложение, когда оно получено:
Если ваше приложение не запущено и пользователь запускает его, нажав на 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)
}