首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在watchapp和它的复杂性之间共享数据模型

在watchapp和它的复杂性之间共享数据模型
EN

Stack Overflow用户
提问于 2017-09-02 19:09:04
回答 1查看 125关注 0票数 4

我正在努力学习如何为Apple Watch开发watchapp,有一件事对我来说似乎有点困难:watchapp和between控制器之间应该如何共享数据?

我在网上看到的大多数例子都遵循以下顺序:

1-在ExtensionDelegate上下载数据,并在InterfaceController上使用;

2-获取从ExtensionDelegate获取数据的ComplicationController

3-在ExtensionDelegate上添加一个后台任务,以便它下载将由InterfaceController和ComplicationController使用的更新数据,同时更新两者。

所以我的数据在ExtensionDelegate的一个集合中。我想知道:

1-启动应用程序时,最初应该由谁让我的ExtensionController下载数据?我的ComplicationController还是我的InterfaceController?我这样问是因为在xcode上有一个模拟器,所以有时我不知道在启动应用程序时哪个是最先调用的。复杂性应该在用户打开应用程序后才开始其生命周期,从而强制第一次数据加载,还是在安装应用程序后开始?或者是否应该在ExtensionDelegate上添加一个标记,用于标记是否没有数据下载、是否有数据正在下载、是否有数据可用(即集合不为空),以便ComplicationController或InterfaceController可以触发第一次数据下载?

2-虽然我的后台下载任务有效,但我觉得在几个小时内,我的应用程序在打开时必须重新加载,就好像它以前没有打开过一样,从而触发了新的数据下载。因此,它上的数据与ComplicationController已经下载并显示的数据不同。解决这个问题的好策略是什么?对我应该检查的内容有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-11 18:15:30

我不确定我是否正确理解了你的问题。无论如何,我通过以下方式完成从iPhone到手表的数据传输:

首先假设已经安装了iPhone应用程序和手表扩展,iPhone应用程序尚未启动,但是手表扩展正在后台运行,这样只要iPhone应用程序运行,它就可以与iPhone通信。

进一步假设,手表显示了一个带有应用程序复杂性的钟表面。

当iPhone应用程序启动时,它首先使用transferCurrentComplicationUserInfo(_:)将复杂数据发送到手表。因此,手表表面显示了复杂程度的数据。

随后,iPhone使用sendMessage(_:replyHandler:errorHandler:)发送消息。这条消息告诉监视扩展,iPhone很快就会发送数据。由于发送数据可能需要更长时间,因此初始消息用于在手表上显示从iPhone加载数据的提示。

随后,我使用updateApplicationContext(_:)发送数据。

第二种情况是iPhone应用程序正在运行,但watch扩展还没有运行。

现在,一旦启动了监视扩展,InterfaceController就会使用sendMessage(_:replyHandler:errorHandler:)立即向iPhone发送一条消息,告知它需要数据。当接收到该消息时,执行如上所述的相同序列:发送复杂数据,发送数据传输即将开始的消息,并启动数据传输。

这是没有问题的。

关于你的问题:

在我的例子中,一旦激活,InterfaceController就会启动传输。

然而,当手表扩展已安装但尚未启动时,我的手表表面已经显示了我的(默认)复杂性数据。这意味着即使watch扩展和iPhone应用程序都没有运行,ComplicationController实际上也在运行。因此,以这种方式开始初始数据传输是可能的。

我没有你在第二个问题中提到的问题,所以我不能对它说什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46013161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档