UNUserNotificationCenterDelegate和didReceiveRemoteNotification之间的区别

时间:2017-03-24 01:35:17

标签: ios swift ios10

当我们实施didReceiveRemoteNotification以及UNUserNotificationCenterDelegate方法时iOS的行为方式 -

  optional public func userNotificationCenter(_ center: 
  UNUserNotificationCenter, didReceive response: UNNotificationResponse, 
  withCompletionHandler completionHandler: @escaping () -> Swift.Void)

根据文档,didReceiveRemoteNotification已被弃用但是如果app已经实现了两个委托方法,哪一个获得iOS 10应用程序以及XCode 8(swift 3)上的iOS 9应用程序?

1 个答案:

答案 0 :(得分:0)

基本上您是在问两个问题,

  1. 标题:UNUserNotificationCenterDelegate和didReceiveRemoteNotification之间的区别?
  2. 主体:我们同时实现didReceiveRemoteNotification和UNUserNotificationCenterDelegate方法时,iOS的行为

回答#1(根据Apple文档):

  • 已弃用: application(:didReceiveRemoteNotification:)

  • 对于远程静音通知: application(:didReceiveRemoteNotification:fetchCompletionHandler:)

  • 对于远程无提示通知:

    • 当应用程序处于后台时:userNotificationCenter(:didReceive:withCompletionHandler:)

    • 当应用程序处于前台时:userNotificationCenter(:willPresent:withCompletionHandler:)

  • 从通知中启动应用程序(在launchOptions?[.remoteNotification]上查找通知):application(:didFinishLaunchingWithOptions:)

回答#2:

如果您实现UNUserNotificationCenterDelegate方法,则远程非静默通知将不会调用application(:didReceiveRemoteNotification:fetchCompletionHandler:)

application(:didReceiveRemoteNotification:fetchCompletionHandler:)仅针对远程静默通知被调用。

如果您想知道为什么,可以看看这个article