gpt4 book ai didi

ios - 使用 WatchConnectivity 框架的独立 watch 应用程序

转载 作者:行者123 更新时间:2023-12-01 19:35:31 26 4
gpt4 key购买 nike

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

文档 https://developer.apple.com/documentation/watchkit/creating_independent_watchos_apps指出,“当 iOS 设备可用时,独立应用程序可以使用 WatchConnectivity 从其 iOS 配套应用程序传输信息......”

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

感谢您的帮助:)

最佳答案

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

激活是异步完成的。完成后,在 session 对象的委托(delegate)中调用 func session(_ session: WCSession, activateDidCompleteWithactivationState: WCSessionActivationState, error: Error?) (必须在启动激活时设置)。
如果激活成功,activationState 现在为 .activated。只有这样才能启动任何传输。

several kinds of transfer 。有些要求 .isReachable 为 true,有些则不需要。

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

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

sendMessage(_:replyHandler:errorHandler:) 还发送一个字典,如果多次调用该函数,所有字典都会被传递。此传输确实需要.isReachable
如果指定了replyHandler,则必须确保当系统尝试调用它时它实际上可用。 (应用程序可能会调用此函数,在发送回复之前进入后台,然后被系统终止。如果随后调用回复,线程将崩溃。)。

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

现在.isReachable is handled differently on iOS and watchOS

iOS:.isReachabletrue,如果配对且事件的 watch 在范围内,则相应的 WatchKit 扩展正在运行,并且 WatchKit 扩展的 .isReachable 属性为 true

watchOS: .isReachabletrue,如果 WatchKit 扩展在前台运行或在后台以高优先级运行,并且 iOS 设备在范围。请注意,iOS 应用不需要必须处于事件状态。如果 watch 开始传输并且 iOS 应用程序未激活,它将启动到后台并可以处理通信。

您提到 .isReachable 始终为 false
因此,如果这与 watchOS 应用程序有关,原因可能是 WCSession 的激活未成功完成,或者 iOS 设备不在范围内。
如果这与 iOS 应用程序有关,原因可能又是 WCSession 的激活未成功完成、 watch 应用程序未在前台运行或未在后台以高优先级运行、或者 watch 未运行。在范围内。
希望这会有所帮助!

关于ios - 使用 WatchConnectivity 框架的独立 watch 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60323964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com