WatchConnectivity - 使用 sendMessage
WatchConnectivity - using sendMessage
我正在尝试使用 WatchConnectivity API 在 Apple Watch(版本 2.0.1)和我的 iPhone(运行 iOS 9.1)之间建立连接Swift.
我关注了this tutorial,无法实现设备间的消息传递。
来自 Apple Watch 的消息:
let applicationData = ["data":sampleData]
self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
// handle reply from iPhone app here
}, errorHandler: {(error ) -> Void in
// catch any errors here
})
在我的 ViewController.swift:
// MARK: - WatchConnectivity Session
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
let sample:HKQuantitySample = (message["data"] as? HKQuantitySample)!
print("Sample messaged: \(sample)")
}
func sessionReachabilityDidChange(session: WCSession) {
print("session reachability changed: \(session.reachable)")
}
Watch 应用程序和 iOS 应用程序都在前台!!
我不确定缺少什么。
所有将字典作为参数的 WCSession API 仅接受您正在使用的 property list types; this includes the sendMessage API 个字典:
message / A dictionary of property list values that you want to send. You define the contents of the dictionary that your counterpart supports. This parameter must not be nil.
所以 HKSamples 不是 property list type 这就是为什么这不起作用,尽管你说错误处理程序没有被调用,这听起来很可疑。您确定将代码更改为此不会记录任何内容吗?
self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
// handle reply from iPhone app here
}, errorHandler: {(error ) -> Void in
print(error);
})
我正在尝试使用 WatchConnectivity API 在 Apple Watch(版本 2.0.1)和我的 iPhone(运行 iOS 9.1)之间建立连接Swift.
我关注了this tutorial,无法实现设备间的消息传递。
来自 Apple Watch 的消息:
let applicationData = ["data":sampleData]
self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
// handle reply from iPhone app here
}, errorHandler: {(error ) -> Void in
// catch any errors here
})
在我的 ViewController.swift:
// MARK: - WatchConnectivity Session
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
let sample:HKQuantitySample = (message["data"] as? HKQuantitySample)!
print("Sample messaged: \(sample)")
}
func sessionReachabilityDidChange(session: WCSession) {
print("session reachability changed: \(session.reachable)")
}
Watch 应用程序和 iOS 应用程序都在前台!! 我不确定缺少什么。
所有将字典作为参数的 WCSession API 仅接受您正在使用的 property list types; this includes the sendMessage API 个字典:
message / A dictionary of property list values that you want to send. You define the contents of the dictionary that your counterpart supports. This parameter must not be nil.
所以 HKSamples 不是 property list type 这就是为什么这不起作用,尽管你说错误处理程序没有被调用,这听起来很可疑。您确定将代码更改为此不会记录任何内容吗?
self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
// handle reply from iPhone app here
}, errorHandler: {(error ) -> Void in
print(error);
})