首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WatchConnectivity -使用sendMessage

WatchConnectivity -使用sendMessage
EN

Stack Overflow用户
提问于 2015-12-02 19:39:06
回答 1查看 1.1K关注 0票数 2

我正试图在我的iPhone (运行iOS 9.1)和Apple (Version2.0.1)之间建立与Swift中的WatchConnectivity API的连接。

我遵循本教程,无法在设备之间实现消息传递。

来自Apple Watch的信息:

代码语言:javascript
复制
    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:

代码语言:javascript
复制
// 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)")
}

手表应用程序和iOS应用程序都是前台!!我不知道缺了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-03 17:00:58

所有将字典作为参数的WCSession API都只接受属性列表类型的字典;这包括您正在使用的sendMessage API

要发送的属性列表值的消息/字典。定义对应方支持的字典的内容。此参数不得为零。

因此,HKSamples不是一个属性列表类型,这就是为什么它不能工作的原因,尽管您说错误处理程序没有被调用,这听起来很可疑。您确定将代码更改为此不会记录任何内容吗?

代码语言:javascript
复制
self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
    // handle reply from iPhone app here
    }, errorHandler: {(error ) -> Void in
        print(error);
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34051505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档