我有一个应用程序支持小部件和WatchOS,它有一个数据存储区(核心数据)。
过去,我使用应用程序分组在主应用程序,小部件和监视应用程序之间进行通信。

但是,在用户升级到WatchOS 3之后,手表应用程序运行非常缓慢。

现在,我将手表部件重写为本地部件。通过主应用程序与WatchOS之间的WatchConnectivity库进行通信,它可以平稳运行。

但是我找不到在小部件和WatchOS之间进行通信的方法。例如。如果由于用户在窗口小部件中的操作而导致某些数据被更改,如何在WatchOS中更新数据?

我尝试了updateApplicationContext,但是如果请求来自窗口小部件,它将报告“WCSession尚未激活”或未安装watchApp。

需要帮助!谢谢!

最佳答案

我敢肯定,您不能直接从“今日”窗口小部件与手表应用进行交流。苹果的体系结构意味着手表应用只能与关联的iOS手机应用进行通话,并且在WatchOS2 / 3中,手表扩展代码现在可以在手表本身而不是手机上运行。

我相信您已经想到了这些,但是我要做的是以下一些/全部:

  • 当小部件更改数据时,向Core Data或User设置中写入一些内容以表示已进行更改(如果尚不明显)。
  • 获取电话应用以对手表进行后台推送-进行后台刷新,或者设置通知以定期唤醒电话应用
  • 获取手表应用程序,使其在激活时通过电话应用程序获取最新数据

  • 让我们知道您是否找到了一个好的解决方案。

    关于ios - Widget和WatchOS2之间如何通信?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39907257/

    10-12 05:26