如何在Apple WatchKit Long Look通知中添加按钮

时间:2015-05-19 15:02:04

标签: ios uilocalnotification watchkit

有人可以通过在长按本地通知中添加按钮来与我联系吗?我是手表套件和通知的新手。

长期看起来功能正常。我在我的主机应用中设置了UILocalNotification,设置了alertBody,category,userInfo等,然后将其发送出去。

在我的通知控制器中,我正在didReceiveLocalNotification中设置所有内容,但它运行正常。

从我的研究来看,似乎我应该以某种方式将按钮添加到通知中并使用方法handleActionWithIdentifier: forLocalNotification,但我不清楚如何做到这一点。

我在写Objective-C。感谢

2 个答案:

答案 0 :(得分:0)

这是我正在使用的通知有效负载:

{
    "aps": {
        "alert": {
            "body": "Hi! How you doing? This is a test message. Press 'Reply' button to reply. Thanks!",
            "title": "Petya"
        },
        "category": "newMessage"
    },

    "WatchKit Simulator Actions": [
        {
            "title": "Reply",
            "identifier": "replyPressed"
        }
    ],
}

创建自定义通知子类并覆盖以下方法,不要忘记在相应的storyboard控制器中设置该子类:

override func didReceiveRemoteNotification(remoteNotification: [NSObject : AnyObject], withCompletion completionHandler: (WKUserNotificationInterfaceType) -> Void) {
    if let aps = remoteNotification["aps"] as? NSDictionary {
      if let alert = aps["alert"] as? NSDictionary {
        if let title = alert["title"] as? String {
          titleLabel.setText(title)
        }
        if let body = alert["body"] as? String {
          bodyLabel.setText(body)
        }
      }
    }
    completionHandler(WKUserNotificationInterfaceType.Custom)
  }

在您的通知中显示标题为“回复”的自定义按钮。当您按下它时,它将启动监视应用程序主界面控制器并致电handleActionWithIdentifier:localNotification:handleActionWithIdentifier:remoteNotification:,具体取决于您收到的通知类型。你必须像那样覆盖它:

override func handleActionWithIdentifier(identifier: String?, forRemoteNotification remoteNotification: [NSObject : AnyObject]) {
    println("identifier: \(identifier)")
    println("remoteNotification: \(remoteNotification)")
    if identifier == "replyPressed" {
      if let aps = remoteNotification["aps"] as? NSDictionary {
        if let alert = aps["alert"] as? NSDictionary {
          if let title = alert["title"] as? NSString {
            let context = Context()
            context.object = title
            pushControllerWithName(kTCChatRoomControllerIdentifier, context: context)
          }
        }
      }
    }
  }

P.S。 Context是我自己的类,用于在WKInterfaceController的子类之间传递数据

希望这会对你有帮助!)

答案 1 :(得分:0)

“Apple Watch编程指南”的Notification Essentials部分介绍了如何为本地通知的Long-Look通知添加操作按钮。

基本上,您需要为要添加到Long-Look界面的每个按钮创建一个UIMutableUserNotificationAction,以及本地通知的类别。当您注册通知时,这会在 iOS应用的应用代表中完成。该指南中的清单15-1显示了如何执行该操作。然后,在Apple Watch应用程序的故事板中,将通知的类别设置为刚刚创建的类别。本指南的下一部分“响应操作按钮中的按钮”应该有希望告诉您需要知道的一切,以便启动WatchKit应用程序,或在iPhone上执行后台任务。