gpt4 book ai didi

ios - `willPresent notification` 是 't called & local notifications aren' t 当应用程序在 iOS 10 中处于前台时不显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:27:51 27 4
gpt4 key购买 nike

当我第一次运行我的应用程序时,模拟器能够在应用程序处于前台时显示通知。

当我重新启动应用程序时 didReceive notification:(即来自 iOS 9 的通知方法)被调用而不是 willPresent notification(即来自 iOS 10 的通知方法)并且没有通知当应用程序在前台时显示。但是,如果应用程序在后台,则会显示通知。

这都不是 question或者这个 question提供了解决这个问题的方法。

我使用此代码获得通知授权:

func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]? = [:]) -> Bool {
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .sound]) { (granted, error) in
UNUserNotificationCenter.current().delegate = self
}
}
return true
}

我已经实现了 willPresent 通知方法:

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) completionHandler(UNNotificationPresentationOptions.alert)
}

这是我创建通知的方式:

let content = UNMutableNotificationContent()
content.title = title
content.subtitle = subtitle
content.body = message
content.categoryIdentifier = identifier

let trigger = UNTimeIntervalNotificationTrigger(
timeInterval: 10.0,
repeats: false)

let request = UNNotificationRequest(
identifier: "identifier",
content: content,
trigger: trigger
)

UNUserNotificationCenter.current().add(
request, withCompletionHandler: nil)

问题简述:如何确保应用程序在第一次运行后处于前台时能够显示通知?

提前致谢。

最佳答案

尝试在 requestAuthorization 完成 block 之外设置委托(delegate)。它可能比您想要的晚发生。

我在这里添加了一个示例项目:https://github.com/jerbeers/DemoLocalNotification

如果您构建并运行,点击按钮,您将在 3 秒后看到本地通知。如果您停止、构建并再次运行,即使应用正在运行,我也会看到本地通知。

关于ios - `willPresent notification` 是 't called & local notifications aren' t 当应用程序在 iOS 10 中处于前台时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40046951/

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