WatchConnectivity-transerUserInfo正在发送但未接收数据

时间:2019-03-14 00:56:14

标签: ios swift apple-watch watchconnectivity

我一直在制作一个使用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,它们可以单独工作。感谢您提供有关如何解决此问题的反馈和建议。干杯!

0 个答案:

没有答案