iOS 11应推送通知由App Delegate方法处理或仅由UNDelegate方法处理

时间:2018-04-16 13:51:58

标签: ios swift push-notification appdelegate unusernotificationcenter

我一直在寻找一个直接的答案,但还没有找到一个,所以我想在这里问我的问题。对于iOS 10后的应用,应该通过

处理远程通知

App Delegate方法:

 func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

}

或,UNDelegate方法:

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

}

1 个答案:

答案 0 :(得分:0)

TVOS不支持UserNotificationsUI.framework,因此如果您需要支持TVOS,请坚持使用原始UIApplicationDelegate方法。

否则,UNUserNotificationCenter是我的首选,如果您可以坚持使用iOS10后支持,因为将来可能会弃用UIApplicationDelegate

如果您使用的是WatchKit,则不推荐使用didReceiveRemoteNotification,请勿使用它。来自documentation

  

创建一个采用该方法的委托对象,而不是使用此方法   UNUserNotificationCenterDelegate协议并实现   userNotificationCenter:willPresentNotification:withCompletionHandler:   和   userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:   方法。将此对象分配给单例的委托属性   UNUserNotificationCenter对象。