我一直在制作一个使用WatchConnectivity将简单结构从Apple Watch转移到iPhone的应用程序,并且遇到了一些麻烦。发送非常好,并且两个设备都可以在同一会话中访问并激活,但是iPhone似乎从未收到我发送过的结构。
这是我当前的代码。我决定使用transferUserInfo
允许后台传输数据。
结构:
struct myDataList {
var xAcc: [Int]
var timestamps: [Int]
}
观看(发送):
func sendTestData(data:myDataList) {
print("sending file to iphone")
if WCSession.default.activationState == WCSessionActivationState.activated && WCSession.isSupported() && WCSession.default.isReachable {
WCSession.default.transferUserInfo(["Data" : data])
}
else {
print("Could not send")
}
}
iPhone(接收):
func session(_ session: WCSession, didReceiveUserInfo userInfo: [String : Any] = [:]) {
print("received something")
DispatchQueue.main.async {
if let data = userInfo["Data"] as? myDataList {
for (acc,time) in zip(data.xAcc,data.timestamps){
let dataLine: String = "\(acc),\(time)\n"
self.appendToFile(file: "data", data: dataLine)
}
}
}
}
在两个设备上,我都已经开始了这样的会话:
if WCSession.isSupported() {
WCSession.default.delegate = self
WCSession.default.activate()
}
我已经测试了其他功能来写入文件/ etc,它们可以单独工作。感谢您提供有关如何解决此问题的反馈和建议。干杯!