2017-02-05 18 views
-1

У меня есть следующий код:Получение удаленного уведомления в 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) { } 
+0

Вы правильно. Удаленные уведомления не передаются методу UNNotificationCenterDelegate – Paulw11

+0

@ Paulw11 - с iOS 10 и выше вам нужно использовать 'UNNotificationCenterDelegate'. 'UIUserNotifications' устарели. – Pierce

+0

Это верно для запроса разрешений на уведомления и для обработки локальных уведомлений, но вы увидите, что 'приложение (_ приложение: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completeHandler: @escaping (UIBackgroundFetchResult) -> Void)' is * не устарел * https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application Кроме того, «получение удаленных уведомлений» не содержится в обзоре «UNNotificationCenter» https://developer.apple.com/ ссылка/usernotifications/unnernotificationcenter? language = objc – Paulw11

ответ

2

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

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() 
} 
+0

yep спасибо, что это –

 Смежные вопросы

  • Нет связанных вопросов^_^