WatchKit InterfaceController有条件地在sendMessage中播放触觉:replyHandler:

时间:2016-04-20 19:10:50

标签: swift watchkit watch-os-2 wcsession wkinterfacecontroller

我想让接口控制器检查,以确保当我从手机收到回复时它仍然在前台。如果是,请执行触觉操作以让用户知道它已完成工作。

sendMessage:replyHandler:是我用于与手机通信的内容,但可能需要很长时间才能返回。 InterfaceController设置为WCSessionDelegate。用户可能需要足够长的时间才能在完成之前降低手腕。在那种情况下,我想捕获触觉不要开火。截至目前,触觉可以排队,然后在将来随机播放,这没有帮助。

我已配置要发送的通知,但仅在手表未显示应用时显示。因此,为什么我需要在尝试播放触觉之前弄清楚interfacecontroller是否在屏幕上。

2 个答案:

答案 0 :(得分:0)

我首先考虑改进iOS代码,因此返回回复的时间不会太长。

但是,您可以在回复消息中包含当前日期,然后在播放触觉之前检查回复处理程序以查看回复是否立即生效。如果您的应用程序下次变为活动状态时处理了回复,这将避免将来播放。

顺便说一句,接口控制器显示在屏幕上,因为它正在执行回复处理程序。

答案 1 :(得分:-1)

我建议的步骤。

    来自Watch的
  1. sendMessage:replyHandler:发送任务请求,这将要求手机执行一些长时间运行的任务。
  2. 通过此次通话观看制作一些BOOL,让我们说shouldUpdatePhone = YES
  3. 现在考虑你的任务正在运行而Watch正在运行InActive,在这种情况下,你的标志(shouldUpdatePhone)是YES,所以再次立即通话并告诉iPhone屏幕现在处于活动状态。
  4. 如果在此之后完成长时间运行的任务,您将获得Watch现在处于非活动状态的信息,然后避免Haptic的响应信号。