OStack程序员社区-中国程序员成长平台

标题: ios - WatchConnectivity - 使用 sendMessage [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:29
标题: ios - WatchConnectivity - 使用 sendMessage

我正在尝试使用 Swift 中的 WatchConnectivity API 在 Apple Watch(2.0.1 版)和我的 iPhone(运行 iOS 9.1)之间建立连接。

我关注了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 app 和 iOS app 都是前台!! 我不确定缺少什么。



Best Answer-推荐答案


所有将字典作为参数的 WCSession API 只接受 property list types 的字典。 ;这包括 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);
})

关于ios - WatchConnectivity - 使用 sendMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051505/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4