繁体   English   中英

watchOS 2.2应用程序如何确定其配对的iPhone是否已切换到另一款Apple Watch?

[英]How can watchOS 2.2 app determine if its paired iPhone has switched to another Apple Watch?

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

文档说, WCSession撑从整个开关周期的WatchKit延伸的角度被激活,并从我在Xcode的测试,似乎手表会议报告说,iPhone也可到达,即使电话已经切换到另一个手表。

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

您问题的具体答案:

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

由于未连接的手表仍然可以启动到其配对的iPhone的转移,您可能必须实施某种握手或超时检测,并查看手机是否未能及时响应。

我的发现:

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

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

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

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

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

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

新示例代码:

您可以试用新的QuickSwitch示例代码 它使用updateApplicationContextupdateApplicationContext和颜色从任何手表传递到手机。

您可以更改标志和颜色未使用的手表,使用的Xcode的设备窗格中切换到该表,然后注意到iOS应用会立即显示该腕表的新标志和颜色( 手表是未使用其排队)。

可能reachable文档不一致:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM