WatchKit InterfaceController 有条件地在 sendMessage:replyHandler:



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

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

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

我首先想到的是改进iOS代码,因此返回回复不需要那么长时间。

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

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

我建议的步骤。

  1. sendMessage:replyHandler:从"监视"发送任务请求,这将要求手机执行一些长时间运行的任务。
  2. 在手表上,这个电话做一些布尔,比方说shouldUpdatePhone = YES
  3. 现在考虑您的任务正在运行并且 Watch 处于非活动状态,在这种情况下,您的标志 ( shouldUpdatePhone ) 是,因此只需再次立即拨打电话并告诉 iPhone 屏幕现在处于非活动状态。
  4. 如果长时间运行的任务在此时间之后完成,您将获得手表现在处于非活动状态的信息,然后避免触觉的响应信号。

最新更新