首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WatchConnectivity框架的独立手表应用程序

使用WatchConnectivity框架的独立手表应用程序
EN

Stack Overflow用户
提问于 2020-02-20 23:58:47
回答 1查看 473关注 0票数 2

在创建独立的watchOS应用程序时,是否可以使用WatchConnectivity框架?

documentation https://developer.apple.com/documentation/watchkit/creating_independent_watchos_apps声明,“当iOS设备可用时,独立的应用程序可以使用iOS从它的iOS伴生应用程序传输信息……”

但是我们如何在iOS应用程序和watchOS应用程序之间发送数据呢?检查isReachable属性时,WCSession对象始终返回false

感谢您的帮助:)

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 19:18:25

在使用WatchConnectivity之前,必须在iOS和watchOS上激活WCSession (首先检查设备是否支持WatchConnectivity的Apple suggests)。

激活是异步完成的。完成后,在会话对象的委托中调用func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) (必须在启动激活时设置)。

如果激活成功,则activationState现在为.activated。只有这样才能启动任何传输。

这里有several kinds of transfer。有些要求.isReachable为真,有些则不是。

updateApplicationContext(_:)向对应设备发送字典。它将在设备处于活动状态时被接收。如果在对方设备激活之前多次调用此函数,则只接收最后一个字典。此传输不需要.isReachable

transferUserInfo(_:)还会发送一个字典,但如果多次调用该函数,则会发送所有字典。此传输也不需要 .isReachable

sendMessage(_:replyHandler:errorHandler:)还会发送一个字典,如果该函数被多次调用,则会再次发送所有字典。此transfer 需要.isReachable

如果指定了replyHandler,则必须确保在系统尝试调用它时它确实可用。(可能发生的情况是,应用程序调用此函数,在发送回复之前转到后台,然后由系统终止。如果随后调用应答,线程将崩溃。)。

对于数据、文件和复杂情况,还有其他类型的传输,请参阅文档。

现在是.isReachable is handled differently on iOS and watchOS

iOS:.isReachabletrue,如果范围内存在成对的活动监视,则相应的WatchKit扩展正在运行,并且WatchKit扩展的.isReachable属性为true

watchOS:如果.isReachable扩展在前台运行或在后台以高优先级运行,且iOS设备在范围内,则WatchKit为true。请注意,iOS应用程序是,而不是激活所需的。如果手表开始转接,而iOS应用程序未处于活动状态,则会在后台启动该应用程序,并可以处理通信。

您提到.isReachable始终为false

因此,如果这与watchOS应用程序有关,原因可能是WCSession的激活未成功完成,或者iOS设备不在范围内。

如果这与iOS应用程序有关,则原因可能再次是WCSession的激活未成功完成、手表应用程序未在前台运行或未在后台以高优先级运行,或者手表不在范围内。

希望这能对你有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60323964

复制
相关文章

相似问题

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