我正在开发一款手表应用。我必须从手机发送数据才能观看。 这工作正常。
当我从手表向移动应用程序发送消息时,会出现主要问题,因为我希望通过手表应用程序启动通信。我已经实现了将数据从手表发送到移动应用程序但总是得到这个
的方法“WCErrorDomain Code = 7014”无法传递有效负载。“错误。
我使用的是xcode 7.3,而watchOS版本是2.0。
还有一件事:sendMessage
方法是否有可能使用监视连接框架在后台打开移动应用程序?或者,如果有人知道在后台打开移动应用程序的任何其他方式,请建议我。提前谢谢。
session.sendMessage(message, replyHandler: { reply in
}, errorHandler: { error in
print("error: \(error)")
})
修改
在AppDelegate和ExtensionDelegate中:
override init() {
super.init()
setupWatchConnectivity()
}
private func setupWatchConnectivity() {
if WCSession.isSupported() {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
在ExtensionDelegate中:
func sendMessage(){
let session = WCSession.defaultSession()
let applicationData:[String:AnyObject] = ["text":"test", "badgeValue": 100 ]
WatchSessionManager.sharedManager.sendMessage(applicationData, replyHandler: {replyMessage in
print("reply received from iphone")
}, errorHandler: {(error ) -> Void in
// catch any errors here
print("no reply message from phone")
})
}
在AppDelegate中:
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
let text = message["text"] as! String
let badgeValue = message["badgeValue"] as! Int
dispatch_async(dispatch_get_main_queue()) { () -> Void in
print("iphone received message from watch App")
self.sendNotification(text, badgeValue: badgeValue)
let applicationDict = ["wake": "nowAwake"]
replyHandler(applicationDict as [String : String])
}
}
在watchSessionManager中:
func sendMessage(message: [String : AnyObject], replyHandler: (([String : AnyObject]) -> Void)?, errorHandler: ((NSError) -> Void)? = nil){
session.sendMessage(message, replyHandler: { reply in
}, errorHandler: { error in
print("error: \(error)")
})
print("mesage %@",message)
}