3

我正在尝试在我的 iOS 9.3/watchOS 2.2 应用程序中支持与多个手表配对的新功能。它似乎运行良好,只是我无法弄清楚 watchOS 应用程序如何确定配对的 iPhone 是否已切换到另一台 Apple Watch。

文档说,从 WatchKit 扩展的角度来看,在整个切换生命周期中保持WCSession激活状态,并且从我在 Xcode 中的测试来看,似乎手表会话报告即使手机已切换到另一只手表,iPhone 也可以访问。

我目前没有多个手表来检查实际设备上的行为是否相同。

4

1 回答 1

4

您的问题的具体答案:

手表不再连接的事实并不明显,因为可以使用所有传输方法,包括即时消息。转移只是推迟到用户切换回该手表。

由于未连接的手表仍然可以向其配对的 iPhone 发起传输,因此您可能必须实施某种握手或超时检测,并查看手机是否无法及时响应。

我的发现:

似乎未连接的手表并不意味着知道用户已切换到其他手表。正如您所指出的,手表应用程序的会话仍然处于活动状态,并且手表(模拟器)仍然报告手机可以访问。

未连接的手表应用程序可以继续使用所有传输方法,包括交互式消息传递(尽管传出数据确实会被系统排队,并且在用户切换回该手表之前不会传输)。

我已经使用两种不同的方法验证了数据是否已排队:

  • 通过使用transferUserInfo手表中的字典,让运行循环执行,重复该过程几次,然后检查outstandingUserInfoTransfers数组。
  • 通过使用sendMessage仅在用户切换回该手表并收到响应后运行的回复处理程序。

一旦切换回来,所有排队的传输都会立即发送到其手机,然后手表会收到任何交互式响应。

虽然未连接的手表能够将数据排队到其配对的 iPhone(因为其会话仍处于活动状态),但手机只能与其连接的手表通信,因为手机不再与任何未连接的手表进行活动会话。

新的示例代码:

您可以试用新的QuickSwitch 示例代码。它用于updateApplicationContext将指示符和颜色从任何手表传递到手机。

您可以更改未使用手表的标志符和颜色,使用 Xcode 设备窗格切换到该手表,然后注意 iOS 应用程序会立即显示该手表的新标志符和颜色(在手表未使用时已排队)

可能的reachable文档不一致:

在您的 WatchKit 扩展中,当匹配会话在用户的 iPhone 上处于活动状态并且设备在范围内时,此属性的值为 YES,因此可能会发生通信。

由于我没有第二块手表,我无法测试未使用的手表的可达性是否会在其手机超出范围时变为假。

于 2016-03-29T19:28:03.543 回答