我收到带有以下请求和类别的通知:
let content = UNMutableNotificationContent()
content.title = title // a string
content.body = body // a string
content.sound = .default
content.categoryIdentifier = "foo"
UNNotificationRequest(
identifier: UUID().uuidString,
content: content,
trigger: trigger // trigger scheduled some seconds in the future, repeats: false
)
UNNotificationCategory(
identifier: content.categoryIdentifier,
actions: actions,
intentIdentifiers: [],
options: .customDismissAction
)
我将它安排在将来的某个时间(x秒),并且不再重复。我有will present
委托方法的以下实现:
public func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
if UIApplication.shared.applicationState != .active {
completionHandler([.alert, .sound])
}
}
这是为了确保在应用程序处于前台时不会显示通知(如果情况如此,我会显示一个模式)。
当应用程序处于后台并且我发出通知时,它会显示为横幅。当我打开手机的通知中心时,也可以在其中看到它。当应用程序出现在前台时,我看不到横幅,并且它也不会显示在通知中心中。完全符合预期。但是,当应用程序处于前台状态并且我安排了通知,然后在传递通知之前将其最小化,我也没有看到横幅,但它确实显示在通知中心中。
我想知道为什么通知会被安排和发送,但没有显示为横幅?是否有与此相关的已知错误?我可能会缺少一些相关代码吗?基本上,我希望传递到通知中心的所有通知也显示为横幅,但是似乎在调度之后和传递之前最小化应用程序时,横幅不会显示。