【问题标题】:Display custom UI with UNNotificationContentExtension for local notifications为本地通知显示带有 UNNotificationContentExtension 的自定义 UI
【发布时间】:2016-10-26 19:54:30
【问题描述】:

我正在尝试使用新的 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。 也许有人以前遇到过同样的问题,可以在这里帮助我。

【问题讨论】:

  • 自定义通知内容只能与 3D Touch 结合使用(我相信)。这意味着只有在用户对通知警报执行 3D Touch 时才会调用您的通知代码。
  • 我可以更新这种通知的内容吗?还是取消之前的内容并显示更新内容的新内容是唯一的选择?

标签: ios swift uikit ios10 unnotificationrequest


【解决方案1】:

无论设备是否具有 3D 触控功能,都可以使用丰富的通知内容。

对于没有 3D touch 的设备,可以下拉通知以获取丰富的界面。 (或者如上所述在通知中心向左滑动。)

【讨论】:

    【解决方案2】:

    据我所知,UNNotificationContentExtension 还支持没有 3DTouch 的设备,对于那些设备,系统在锁定屏幕上添加了向左滑动的通知行为,滑动后您可以看到名为 view 的按钮和然后,如果您点击它,您可以看到内容扩展

    【讨论】:

    • 您能否确认 UNNotificationContentExtension 即使没有 3DTouch 也能正常工作。在我这边它不起作用
    • 它适用于我的非 3D Touch 手机,特别是 iPhone 6
    • 我可以更新这种通知的内容吗?还是取消之前的内容并显示更新内容的新内容是唯一的选择?
    【解决方案3】:

    刚刚体验到我的UNNotificationContentExtension 没有显示在运行 iOS 10.2.1 的 iPhone 7 上。

    奇怪的是,内容扩展会同时显示在 iOS 模拟器和运行 iOS 10.3.1 的 iPhone 6S 上。

    修复:将 iPhone 7 更新到最新版本的 iOS (10.3.1) 修复了该问题,并且一切都按现在应该的方式显示。看起来一定是 iOS 本身的错误。

    【讨论】:

      【解决方案4】:

      你的代码没有问题。

      据我所知,UNNotificationContentExtension只支持支持3DTouch的设备(测试环境iOS10 beta1)。与 UNTextInputNotificationAction 相同。

      然后按下或下拉即可显示自定义UIViewcontroller。

      【讨论】:

      • 你能解释更多,也许给链接?我在通知中需要两个自定义操作,这种情况是否属于这种 3D 触摸需求?你能帮我解决这个问题吗:stackoverflow.com/questions/38954496/…
      • @Async-,通知操作不需要自定义 UI 或 3D 触摸。这一切都可以通过UserNotifications framework. 完成
      • 这不准确。例如,当您的 iPhone 解锁时,您可以在下拉通知时访问通知内容扩展。 3D Touch 只是其中一种访问方式。
      猜你喜欢
      • 2016-12-28
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      相关资源
      最近更新 更多