Получение удаленного уведомления в Swift 3

У меня есть следующий код:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let queryNotification = CKQueryNotification(fromRemoteNotificationDictionary: userInfo)
    let notification = Notification(name: NSNotification.Name("Name"), object: nil, userInfo: ["Key": queryNotification])
    NotificationCenter.default.post(notification)
}

Однако мне сказали, что это неправильный способ получения удаленных уведомлений. Вместо этого мне было приказано использовать следующий метод делегата. Я не понимаю, как этот метод может быть использован для того, что я делал выше. Кто-нибудь, пожалуйста, помогите.

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

1 ответ

Решение

Я думаю, что вы пытаетесь сделать что-то вроде этого:

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

    // Extrapolate userInfo
    let userInfo = response.notification.request.content.userInfo
    let queryNotification = CKQueryNotification(fromRemoteNotificationDictionary: userInfo)
    let notification = Notification(name: NSNotification.Name("Name"), object: nil, userInfo: ["Key": queryNotification])
    NotificationCenter.default.post(notification)

    completionHandler()
}
Другие вопросы по тегам