当我的应用程序处于终止模式(不在后台)时,远程通知到达时哪个代表首先调用

时间:2018-07-04 06:08:08

标签: ios xcode swift3 push-notification remote-notifications

动机:-我想存储在应用程序收到的通知处于非后台模式或处于终止状态时存储的通知有效负载。

问题:-应用程序在终止模式下收到通知时,没有代表呼叫。请提出在这种情况下的处理方法。

2 个答案:

答案 0 :(得分:1)

摘自Apple文档(UNUserNotificaitonCenter框架iOS 10 +)...

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    print("didReceive \(response.notification.request.content.userInfo)")
}
  

仅当应用程序在前台时,才会在委托上调用该方法。如果未实现该方法或未及时调用该处理程序,则不会显示该通知。应用程序可以选择将通知显示为声音,徽章,警报和/或显示在通知列表中。该决定应基于通知中的信息是否对用户可见。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

    print("willPresent: \(notification.request.content.userInfo)")
    completionHandler([.alert, .badge, .sound])
}
  

当用户通过打开应用程序,取消通知或选择UNNotificationAction响应通知时,将在委托上调用该方法。必须在应用程序从application:didFinishLaunchingWithOptions:返回之前设置委托。

答案 1 :(得分:0)

当应用被终止或退出时,您将无法执行此操作。但是,您可以检索已发送的通知,并在再次打开应用程序时对其进行处理。您可以通过以下过程获取通知。

UNUserNotificationCenter.current().getDeliveredNotifications { notifications in

    for aNoitfication in notifications
    {
        let payload = aNoitfication.request.content.userInfo
        //process the payload
    }
    DispatchQueue.main.sync { /* or .async {} */ 
        // update UI
    }
}

P.S:仅在iOS 10或更高版本上可用