gpt4 book ai didi

ios - 为什么没有触发 userNotificationCenter didReceive?

转载 作者:行者123 更新时间:2023-11-28 11:41:58 24 4
gpt4 key购买 nike

这是我的代码的一部分。我想使用 UNUserNotificationCenterUNUserNotificationCenterDelegate 来处理通知事件。

当应用程序处于前台状态时,此代码会捕获通知事件。但是 "didReceive" 不会为后台状态触发。

func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
UNUserNotificationCenter.current().delegate = self
application.registerForRemoteNotifications()
return true
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
print("willPresent") /// This works
completionHandler([.alert, .badge, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
print("didReceive") /// This doesn't work
completionHandler()
}

但如果我不使用 UNUserNotificationCenter.current().delegate = self,委托(delegate)方法会在后台正确触发。

func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping FetchCompletionHandler) {
print("didReceiveRemoteNotification... \(userInfo)")
}

如何使用“didReceive”?我想在后台处理通知。

最佳答案

application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 在应用程序收到静默推送通知时调用。当应用程序处于后台状态时,可以传递静默推送通知,iOS 唤醒应用程序以执行对用户不可见的后台处理。

静默推送通知的 content-available 标志设置为 1。

无声推送通知不应包含警报、角标(Badge)或声音。静默推送并不意味着对用户可见,它只是向应用程序提示新的远程内容可用。

从您的推送通知负载中删除 content-available 标志将导致 iOS 将其作为常规通知处理。将调用用户通知中心委托(delegate)方法,而不是 application(_:didReceiveRemoteNotification:fetchCompletionHandler:),但您的应用程序将无法执行由通知触发的后台处理。

您可以使用 this tool 验证推送通知负载的内容是否存在此类问题

关于ios - 为什么没有触发 userNotificationCenter didReceive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53460280/

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