添加按钮到动态通知界面

时间:2017-08-24 12:14:50

标签: apple-push-notifications watchkit

我正在创建自定义动态通知以向用户显示。在didReceiveNotification NotificationController功能处收到此通知后,我会使用正确的数据设置接口插座。我的问题是,我没有意识到如何在默认关​​闭按钮上方添加自定义按钮,因为通知故事板不允许按钮插入,Apple Documentation表示

  

不要包含按钮,开关或其他交互式控件。

但我看到很多手表应用程序都有自定义操作,如Messages和Facebook Messenger。有没有办法在watchOS上向动态界面添加自定义操作?

1 个答案:

答案 0 :(得分:1)

您无法向动态通知界面添加按钮。如果您尝试这样做,您将收到错误

  

非法配置:通知界面不支持按钮。

但是,您可以在Dismiss按钮以外的通知中添加系统按钮。在设置通知中心的类别时,您可以指定要添加到通知类别的自定义UNNotificationActions

var categories = Set<UNNotificationCategory>()
let myCategory = UNNotificationCategory(identifier: "MyCategory", actions: [/*your custom actions go here*/], intentIdentifiers: [], options: []) //set up the actions here
categories.insert(myCategory)
center.setNotificationCategories(categories)

然后,您可以使用UNUserNotificationCenterDelegate方法处理用户与这些操作的互动(在动态通知界面上显示为常规按钮)userNotificationCenter(_:didReceive:withCompletionHandler:),如下所示:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    switch response.actionIdentifier {
    case "Ok":
        print("Ok action tapped")
    case "Dismiss":
        print("Dismiss action tapped")
    default:
        break
    }
    completionHandler()
}