Apple Watch OS 2 如何在自定义通知中显示/隐藏操作按钮

Lau*_*fan 5 push-notification ios apple-watch watchkit watchos-2

我正在构建一个 Apple Watch os 2 应用程序扩展,我需要实现通知。当我阅读苹果文档时,我发现我需要的是一个自定义通知,因此为它构建了 UI,但问题是我必须处理多个通知案例,而不是所有案例都有一个操作按钮,所以我的问题是如何更改操作按钮的名称以及是否可以隐藏它。

我知道可以使用 PushNotificationPayload.apns 文件创建操作按钮,也可以在 apns 文件中设置操作按钮和功能,但是否也可以在代码中执行此操作(隐藏/显示按钮操作并调整它的姓名)。

我在想我可以在 didReceiveRemoteNotification:withCompletion: 中做一些实现吗?

这是一些背景信息:

在此处输入图片说明 在此处输入图片说明

更新 1

再次阅读此苹果文档后,我进行了以下更改:

  1. 实现了另一个通知接口控制器并检查了“具有动态接口”

在此处输入图片说明

  1. 添加了“通知类别名称”

在此处输入图片说明

  1. 创建了“WKUserNotificationInterfaceController”的另一个子类并将其与故事板中的新自定义通知相关联

使用“类别”键和每个自定义类别的正确值(在我的情况下为“Cat1”和“Cat2”),设法测试在通知到达时是否加载了正确的类别。

现在我唯一的问题是:

我如何在本地管理自定义通知按钮?(显示多少按钮,按钮的标题,这样我就不会像 .apns 测试通知那样依赖服务器)

如果这是不可能的,那么我的问题就变成了:

关于显示的操作,来自服务器的通知应该如何(格式)?我是否仍应将操作发送为:

"WatchKit Simulator Actions": [
        {
            "title": "First Button",
            "identifier": "firstButtonAction"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

或者我应该将它们传递给aps密钥:

"alert" : {
     "body" : "Test message",
     "title" : "Optional title",
     "action" : [
        {
           "title" : "First Button",
           "identifier" : "firstButtonAction"
        }
     ]
  }
Run Code Online (Sandbox Code Playgroud)

更新 2

在阅读了将操作按钮添加到通知的文档后,我认为这是我需要做的,同时阅读本教程。但主要区别在于,这样做也会影响我的 iOS 应用程序,并且我希望操作按钮仅用于我在手表上检索到的通知,这是否可以在 IOS 应用程序的应用程序委托中添加操作并且仅影响我的手表应用程序上的通知外观?