从 Today Extension 请求数据
Requesting data from a Today Extension
似乎 WatchKit 是使用 ios8 中提出的相同扩展机制构建的。
我开始制作 Today Extension 并通读了指南。它说数据是使用应用程序组共享的,就像 WatchKit 中的情况一样,但是,与 WK 不同的是,它似乎在说你应该:
- 不假设父应用是 运行
- 唤醒它获取数据
所以我的问题很简单:我错了吗?我想从应用程序中获取一些信息。似乎我可以获取上下文对象并调用 openURL 并要求应用程序刷新通道中的数据,然后让我的扩展监听更新的通知。但我找不到任何这样做的例子。
在这种情况下,这可能不是您想要的。您可以使用扩展上下文打开由包含应用程序处理的 URL。但是当你这样做时,父应用程序将出现在前台,你的今天扩展将不可见。如果您想切换到该应用程序,那很好,但如果您只想在保持扩展程序可见的同时获取一些数据,那就不好了。
通常的做法不是向包含应用程序请求数据,而是将数据存储在应用程序和扩展程序都可以直接读取的位置。这就是使用应用程序组的意义所在——您将数据保存在组目录中,然后扩展会读取它需要的内容。这不要求包含的应用程序是 运行,并且它也不会启动该应用程序。
配置应用程序组后,您可以使用 -[NSFileManager containerURLForSecurityApplicationGroupIdentifier:]
查找位置。将您的数据放在那里,任何具有适当组功能的应用程序或扩展程序都可以使用它。
似乎 WatchKit 是使用 ios8 中提出的相同扩展机制构建的。
我开始制作 Today Extension 并通读了指南。它说数据是使用应用程序组共享的,就像 WatchKit 中的情况一样,但是,与 WK 不同的是,它似乎在说你应该:
- 不假设父应用是 运行
- 唤醒它获取数据
所以我的问题很简单:我错了吗?我想从应用程序中获取一些信息。似乎我可以获取上下文对象并调用 openURL 并要求应用程序刷新通道中的数据,然后让我的扩展监听更新的通知。但我找不到任何这样做的例子。
在这种情况下,这可能不是您想要的。您可以使用扩展上下文打开由包含应用程序处理的 URL。但是当你这样做时,父应用程序将出现在前台,你的今天扩展将不可见。如果您想切换到该应用程序,那很好,但如果您只想在保持扩展程序可见的同时获取一些数据,那就不好了。
通常的做法不是向包含应用程序请求数据,而是将数据存储在应用程序和扩展程序都可以直接读取的位置。这就是使用应用程序组的意义所在——您将数据保存在组目录中,然后扩展会读取它需要的内容。这不要求包含的应用程序是 运行,并且它也不会启动该应用程序。
配置应用程序组后,您可以使用 -[NSFileManager containerURLForSecurityApplicationGroupIdentifier:]
查找位置。将您的数据放在那里,任何具有适当组功能的应用程序或扩展程序都可以使用它。