iOS 14 UNNotificationPresentationOptions.list、.banner 与警报

Fit*_*ill 31 notifications swift ios14

您好,我正在尝试显示一些通知数据。在我的通知中,我有一个通知 ID,可以根据推送的信息做出不同的反应。

我只是看不到那些新的 UNNotificationPresentationOptions 是什么。

在我的

userNotificationCenter(_: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
Run Code Online (Sandbox Code Playgroud)

我有

 if notification.request.content.userInfo[keyName] as? String == "someId" {
     // Bla bla stuffs
     if #available(iOS 14.0, *) {
         completionHandler([.list, .banner, .sound])
     } else {
         completionHandler([.alert])
     }
  } else if ...
Run Code Online (Sandbox Code Playgroud)

但是当使用 [.banner] 或 [.list] 或 [.banner, .list] (没有 .alert)时,我在前台什么也没有。在理想的情况下,我希望在通知中心列出通知并在我的应用程序中显示相关信息(在调用完成处理程序之前)。

我使用这些选项正确吗?

wil*_*lc0 62

  • [.list]只会显示通知中心的通知(从顶部下拉时显示的菜单)
  • [.banner]只会像普通推送通知一样从顶部弹出横幅
  • [.list, .banner]将执行以下两项操作:显示横幅并确保其位于列表中。

[.alert][.list, .banner]据我所知,其本质上与having相同。他们只是添加了这两个选项来提供更精细的控制。

我刚刚在本地测试了这个,它达到了我的预期,所以如果它对你不起作用,它可能不会达到这些标准。您是否添加了一些断点来验证这些行是否被命中?


Yog*_*tel 5

通知以两种方式显示

  1. 它显示在顶部菜单中,当您从顶部下拉时,该菜单将变得可见。
  2. 在通知中心列表中

首先,[.list] - 它将显示在通知中心列表中,而不是顶部菜单中。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.list, .badge, .sound])
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

第二个[.banner] - 它将显示在顶部菜单中,但不会像列表一样显示在列表

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.banner, .badge, .sound])
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果您想要通知中心中的事物列表和顶部菜单,请执行以下操作

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.banner, .list, .badge, .sound])
    }
Run Code Online (Sandbox Code Playgroud)

该函数似乎具有与同时具有和功能.alert类似的用途。引入这两个附加选项似乎是为了对所需结果提供更精确的控制。(.alert 已弃用).list.banner

如果您正在寻找代码或教程,请查看我在本地通知上的视频:- https://www.youtube.com/watch?v=yMbujKTf0uQ&t=1480s

  • “据我所知,[.alert] 的作用与 [.list、.banner] 基本相同。他们只是添加了这两个选项以提供更精细的控制。” 字面上是我的答案的逐字复制。这看起来只是你的 YouTube 频道的一个插件。 (2认同)