如何触发WK通知

时间:2017-02-19 11:22:08

标签: swift xcode notifications watch

我会编写什么代码来触发手表应用程序本身的手表套件通知?例如,如果我将手表故事板中的按钮连接到我的WatchInterfaceController作为动作,那么当按下它时会触发手表上的通知。

2 个答案:

答案 0 :(得分:0)

要测试观看通知,您必须先创建新的构建方案。

复制您的观看应用计划,并在“运行”部分中,选择您的自定义通知作为可执行文件。

现在您可以运行通知方案。

在项目的扩展组内,在Supporting Files下是一个名为PushNotificationPayload.json的文件。

您可以编辑有效内容文件以尝试不同的通知和类别。

答案 1 :(得分:0)

要触发通知,首先需要权限:(通常在ExtensionDelegate中声明)

func askPermission() {

    UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .alert,.sound]) { (authBool, error) in
        if authBool {
            let okAction = UNNotificationAction(identifier: "ok", title: "Ok", options: [])
            let category = UNNotificationCategory(identifier: "exampleCategoryIdentifier", actions: [okAction], intentIdentifiers: [], options: [])

            UNUserNotificationCenter.current().setNotificationCategories([category])
            UNUserNotificationCenter.current().delegate = self
        }
    }
}

要使其正常工作,您需要导入(在ExtensionDelegate中)" UserNotifications"并延伸:

  

UNUserNotificationCenterDelegate

完成后,您可以通过以下方式调用askPermission:

    if let delegate = WKExtension.shared().delegate as? ExtensionDelegate {
        delegate.askPermission()
    }

现在你(希望)拥有触发通知的权限! 要触发通知,您可以使用如下函数:

func notification() {

    let content = UNMutableNotificationContent()
    content.body = "Body Of The Notification"
    content.categoryIdentifier = "exampleCategoryIdentifier" // Re-Use the same identifier of the previous category.
    content.sound = UNNotificationSound.default() // This is optional

    let request = UNNotificationRequest(identifier: NSUUID().uuidString,
                                        content: content,
                                        trigger: nil)
    let center = UNUserNotificationCenter.current()

    center.add(request) { (error) in
        if error != nil {
            print(error!)
        } else {
            print("notification: ok")
        }
    }
}