传递到通知中心的UNUserNotification不会作为横幅显示在屏幕上

时间:2019-08-20 15:42:45

标签: ios swift

我收到带有以下请求和类别的通知:

    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])
    }
}

这是为了确保在应用程序处于前台时不会显示通知(如果情况如此,我会显示一个模式)。

当应用程序处于后台并且我发出通知时,它会显示为横幅。当我打开手机的通知中心时,也可以在其中看到它。当应用程序出现在前台时,我看不到横幅,并且它也不会显示在通知中心中。完全符合预期。但是,当应用程序处于前台状态并且我安排了通知,然后在传递通知之前将其最小化,我也没有看到横幅,但它确实显示在通知中心中。

我想知道为什么通知会被安排和发送,但没有显示为横幅?是否有与此相关的已知错误?我可能会缺少一些相关代码吗?基本上,我希望传递到通知中心的所有通知也显示为横幅,但是似乎在调度之后和传递之前最小化应用程序时,横幅不会显示。

0 个答案:

没有答案