为本地通知显示带有 UNNotificationContentExtension 的自定义 UI
Display custom UI with UNNotificationContentExtension for local notifications
我正在尝试使用新的 UNNotificationContentExtension 来显示本地通知的自定义用户界面,但只显示默认通知警报。
我使用 Xcode 模板创建了扩展,并在 Info.plist 中指定了 UNNotificationExtensionCategory
。
之后,我将注册通知并在 application(_:didFinishLaunchingWithOptions:)
中设置 UNNotificationCategory
let center = UNUserNotificationCenter.current()
center.requestAuthorization([.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
}
let action = UNNotificationAction(identifier: "Delete", title: "Delete", options: [])
let category = UNNotificationCategory(identifier: "notify-test", actions: [action], minimalActions: [], intentIdentifiers: [], options: [])
UNUserNotificationCenter.current().setNotificationCategories([category])
我计划通知在应用进入后台五秒后触发,代码如下:
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey: "Hello_message_body", arguments: nil)
content.sound = UNNotificationSound.default()
content.categoryIdentifier = "notify-test"
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)
let request = UNNotificationRequest.init(identifier: "notify-test", content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request)
通知按预期触发,但显示 iOS 默认样式,显示默认 Storyboard 文件中定义的自定义 UI 的 none。
也许有人 运行 以前遇到过同样的问题,可以在这里帮助我。
你的代码没有问题
据我所知,UNNotificationContentExtension只支持支持3DTouch的设备(测试环境iOS10 beta1)。与 UNTextInputNotificationAction 相同。
然后按下或下拉可以显示自定义的UIViewcontroller。
据我所知,UNNotificationContentExtension 还支持没有 3DTouch 的设备,对于这些设备,系统为锁屏通知添加了向左滑动的行为,滑动后你可以看到名为 view
然后你可以看到内容扩展,如果你点击它
无论设备是否具有 3D 触摸功能,都可以使用丰富的通知内容。
对于没有 3D 触摸的设备,可以下拉通知以获得丰富的界面。 (或者如上所述在通知中心向左滑动。)
刚刚遇到我的 UNNotificationContentExtension
没有显示在 iPhone 7 运行 iOS 10.2.1.
奇怪的是,内容扩展会在 iOS 模拟器和 iPhone 6S 运行 iOS 10.3.1.
上愉快地显示
修复: 将 iPhone 7 更新到最新版本的 iOS (10.3.1) 解决了这个问题,现在一切都正常显示.看起来一定是 iOS 本身的错误。
我正在尝试使用新的 UNNotificationContentExtension 来显示本地通知的自定义用户界面,但只显示默认通知警报。
我使用 Xcode 模板创建了扩展,并在 Info.plist 中指定了 UNNotificationExtensionCategory
。
之后,我将注册通知并在 application(_:didFinishLaunchingWithOptions:)
UNNotificationCategory
let center = UNUserNotificationCenter.current()
center.requestAuthorization([.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
}
let action = UNNotificationAction(identifier: "Delete", title: "Delete", options: [])
let category = UNNotificationCategory(identifier: "notify-test", actions: [action], minimalActions: [], intentIdentifiers: [], options: [])
UNUserNotificationCenter.current().setNotificationCategories([category])
我计划通知在应用进入后台五秒后触发,代码如下:
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey: "Hello_message_body", arguments: nil)
content.sound = UNNotificationSound.default()
content.categoryIdentifier = "notify-test"
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)
let request = UNNotificationRequest.init(identifier: "notify-test", content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request)
通知按预期触发,但显示 iOS 默认样式,显示默认 Storyboard 文件中定义的自定义 UI 的 none。 也许有人 运行 以前遇到过同样的问题,可以在这里帮助我。
你的代码没有问题
据我所知,UNNotificationContentExtension只支持支持3DTouch的设备(测试环境iOS10 beta1)。与 UNTextInputNotificationAction 相同。
然后按下或下拉可以显示自定义的UIViewcontroller。
据我所知,UNNotificationContentExtension 还支持没有 3DTouch 的设备,对于这些设备,系统为锁屏通知添加了向左滑动的行为,滑动后你可以看到名为 view
然后你可以看到内容扩展,如果你点击它
无论设备是否具有 3D 触摸功能,都可以使用丰富的通知内容。
对于没有 3D 触摸的设备,可以下拉通知以获得丰富的界面。 (或者如上所述在通知中心向左滑动。)
刚刚遇到我的 UNNotificationContentExtension
没有显示在 iPhone 7 运行 iOS 10.2.1.
奇怪的是,内容扩展会在 iOS 模拟器和 iPhone 6S 运行 iOS 10.3.1.
上愉快地显示修复: 将 iPhone 7 更新到最新版本的 iOS (10.3.1) 解决了这个问题,现在一切都正常显示.看起来一定是 iOS 本身的错误。