您好,我正在尝试显示一些通知数据。 在我的通知中,我有一个通知 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)时,我在前台什么也没有。在理想的情况下,我希望在通知中心列出通知并在我的应用程序中显示相关信息(在调用完成处理程序之前)。
我使用这些选项正确吗?
[.list]
只会显示通知中心的通知(从顶部下拉时显示的菜单)[.banner]
只会像普通推送通知一样从顶部弹出横幅[.list, .banner]
会同时执行以下两个操作:显示横幅并确保其位于列表中。[.alert]
本质上与拥有[.list, .banner]
相同。他们只是添加了这两个选项来提供更精细的控制。
我刚刚在本地测试了这个,它达到了我的预期,所以如果它对你不起作用,它可能不会达到这些标准。您是否添加了一些断点来验证这些行是否被命中?
通知有两种显示方式
首先,[.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