我正在尝试在iOS 9.3 / watchOS 2.2应用程序中支持与多个手表配对的新功能。它似乎运行良好,除了我无法弄清楚watchOS应用程序如何确定配对的iPhone是否已切换到另一个Apple Watch。
docs表示WCSession
在整个切换生命周期中从WatchKit扩展的角度保持激活状态,而在我的Xcode测试中,似乎手表会话报告iPhone也是即使手机已切换到另一只手表也可以到达。
我目前没有多个手表可以检查实际设备上的行为是否相同。
答案 0 :(得分:4)
您问题的具体答案:
手表不再连接的事实并不明显,因为可以使用所有传输方法,包括即时消息。转移只是推迟到用户切换回该手表。
由于未连接的手表仍然可以启动对其配对iPhone的转移,您可能必须实施某种握手或超时检测,并查看手机是否无法及时响应。
我的发现:
似乎未连接的手表并不意味着用户已经切换到不同的手表。正如您所指出的,手表应用程序的会话仍处于活动状态,手表(模拟器)仍然报告手机可以访问。
未连接的观看应用可以继续使用所有传输方法,包括交互式消息传递(尽管传出的数据确实已被系统排队,并且在用户切换回该手表之前不会转移。)
我已经使用两种不同的方法验证数据已排队:
transferUserInfo
字典,让运行循环执行,重复该过程几次,然后检查outstandingUserInfoTransfers
数组。 sendMessage
回复处理程序,只在用户切换回该监视后运行,并收到回复。 切换回来后,所有排队的转移立即发送到手机,然后手表会收到任何互动回复。
虽然未连接的手表能够将数据排队到其配对的iPhone(因为其会话仍处于活动状态),但手机只能与其连接的手表通信,因为手机不再与任何未连接的手机进行通话观看。
新示例代码:
您可以试用新的QuickSwitch sample code。它使用updateApplicationContext
将指纹和颜色从任何手表传递到手机。
您可以更改未使用手表的指示符和颜色,使用Xcode Devices窗格切换到该手表,然后注意iOS应用程序会立即显示该手表的新指示符和颜色(排队> 表没用了。)
可能的reachable
文档不一致:
在您的WatchKit扩展程序中,当匹配会话在用户的iPhone上处于活动状态且设备在范围内时,此属性的值为YES,以便进行通信。
由于我没有第二块手表,一旦手机超出范围,我无法测试未使用的手表的可达性是否会变为假。