IOS 14 UNNotificationPresentationOptions.list,.banner 与警报
IOS 14 UNNotificationPresentationOptions.list, .banner vs alert
您好,我正在尝试显示一些通知数据。
在我的通知中,我有一个通知 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])
}
它会给你两个图像输出。
据我所知,[.alert] 与 [.list, .banner] 的作用基本相同。他们只是添加了这两个选项以提供更精细的控制。
如果您正在寻找代码或教程,请查看我在本地通知上的视频:- https://www.youtube.com/watch?v=yMbujKTf0uQ&t=1480s
您好,我正在尝试显示一些通知数据。 在我的通知中,我有一个通知 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])
}
它会给你两个图像输出。
据我所知,[.alert] 与 [.list, .banner] 的作用基本相同。他们只是添加了这两个选项以提供更精细的控制。
如果您正在寻找代码或教程,请查看我在本地通知上的视频:- https://www.youtube.com/watch?v=yMbujKTf0uQ&t=1480s