我想添加到我的Watch应用程序功能,该功能向iPhone应用程序发送本地通知(当iPhone应用程序在后台或iPhone被锁定时)。
我知道如何创建本地通知本身。
我要求的是如何通过(例如)点击Apple Watch上的按钮触发iPhone上的后台处理(其中还包含本地通知)。
答案 0 :(得分:3)
WKInterfaceController.openParentApplication
是与iPhone通信的官方方式。 Documentation
您传递userInfo
词典中的参数并通过reply
块检索结果。
在iPhone上,请求由appDelegate' handleWatchKitExtensionRequest
方法处理。 Documentation
答案 1 :(得分:1)
我的InterfaceController.swift中的代码:
@IBAction func btn() {
sendMessageToParentApp("Button tapped")
}
// METHODS #2:
func sendMessageToParentApp (input:String) {
let dictionary = ["message":input]
WKInterfaceController.openParentApplication(dictionary, reply: { (replyDictionary, error) -> Void in
if let castedResponseDictionary = replyDictionary as? [String:String], responseMessage = castedResponseDictionary["message"] {
println(responseMessage)
self.lbl.setText(responseMessage)
}
})
}
接下来,我在AppDelegate.swift中创建了新方法:
func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) {
if let infoDictionary = userInfo as? [String:String], message = infoDictionary["message"] {
let response = "iPhone has seen this message." // odešle se string obsahující message (tedy ten String)
let responseDictionary = ["message":response] // tohle zase vyrobí slovník "message":String
NSNotificationCenter.defaultCenter().postNotificationName(notificationWatch, object: nil)
reply(responseDictionary)
}
}
正如您所看到的,我使用通知来让iOS应用知道该按钮已被点击。在ViewController.swift中,我有Notification Observer和函数,每当观察者捕获用户点击监视按钮的通知时执行该函数(“notificationWatch”是带有通知键的全局变量)。希望这对任何人都有帮助。