IOS 14 UNNotificationPresentationOptions.list、.banner 与警报

问题描述 投票:0回答:2

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

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

在我的

userNotificationCenter(_: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)

我有

 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 ...

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

我使用这些选项正确吗?

swift notifications ios14
2个回答
58
投票
  • [.list]
    只会显示通知中心的通知(从顶部下拉时显示的菜单)
  • [.banner]
    只会像普通推送通知一样从顶部弹出横幅
  • [.list, .banner]
    会同时执行以下两个操作:显示横幅并确保其位于列表中。
据我所知,

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

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


4
投票

通知有两种显示方式

  1. 它显示在顶部菜单中(从顶部下拉时显示的菜单)
  2. 通知中心列表中

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

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

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

那样显示在列表中
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.banner, .badge, .sound])
    }

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.