3

所以我浏览了很多关于 WatchOS2 的教程。

  1. 我可以从 iPhone 模拟器和 iWatch 模拟器中增加、减少计数器(标签值)(当两者都处于活动状态时)。

  2. 当 iOS 应用程序处于非活动状态(终止)时,watchOS2 应用程序处于活动状态,在 watchOS2 应用程序中更改值,然后打开 iOS 应用程序,计数器标签正在更改。

但反过来是行不通的。在 watchOS2 应用程序处于非活动状态(终止)时更改 iOS 应用程序中的标签计数器。然后打开 watchOS2 应用程序,但该值未更改或与 iOS 应用程序不同。

对于更改值,我使用了这种方法

   NSDictionary *dic = @{@"counter":[NSNumber numberWithInt:self.counter]};
   WCSession *session = [WCSession defaultSession];
   NSError *error;
  [session updateApplicationContext:dic error:&error];

我使用了本教程,根据本教程[session updateApplicationContext:dic error:&error];是一种更新或更改整个上下文的方法。因此,当 watchOS2 应用程序处于活动状态时,它不应该获取在 watchOS2 应用程序终止时由 iOS 应用程序更新的最新上下文。

请建议我必须做什么。我没有找到一个解决方案或找到所有教程,并没有解决这个问题。

4

1 回答 1

0

您有两个应用程序上下文:一个从 iOS 到 watch os,一个反之亦然。不要把他们当成一体。

您可能会考虑以下想法:

仅使用从 iOS 应用到手表的上下文。

  1. iOS 保存状态,将状态更新作为上下文发送到手表,就像您之前所做的那样。

  2. 如有必要,通过用户信息队列将差异从 watchOS 发送到 iOS。用户信息消息应包含类似“计数器加 1”的内容。用户信息不会丢失,如果目前无法交付,则会排队。

  3. 当 iOS 应用程序收到“计数器加 1”时,它会执行此操作,更新其 UI 并将最终结果作为上下文发送给手表。

当用户有两个手表时,这也应该有效。

于 2016-05-12T05:31:30.577 回答