gpt4 book ai didi

ios - UNUserNotificationCenterDelegate 和 didReceiveRemoteNotification 的区别

转载 作者:行者123 更新时间:2023-12-01 15:24:52 24 4
gpt4 key购买 nike

当我们同时实现 didReceiveRemoteNotification 和 UNUserNotificationCenterDelegate 方法时,iOS 的行为方式 -

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

根据文档 didReceiveRemoteNotification 已被弃用,但如果应用程序同时实现了委托(delegate)方法,那么 XCode 8(swift 3)上的 iOS 10 应用程序和 iOS 9 应用程序会调用哪一个?

最佳答案

基本上你在问两个问题,

  • 标题:UNUserNotificationCenterDelegate 和 didReceiveRemoteNotification 的区别?
  • 正文:当我们同时实现 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

    关于ios - UNUserNotificationCenterDelegate 和 didReceiveRemoteNotification 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989932/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com