0

我想制作一个应用程序,它可以定期、不定期地自动从用户定义的站点列表中下载一些数据,然后它可以根据这些数据分析和显示历史图表和其他报告。

如果我要在 Windows 中执行此操作,我会使用系统任务计划程序;如果我在 Unix 中,我会使用 cron;如果我在 Android 中,我会使用服务。我想知道如何在iOS中做到这一点。

就我的研究而言,这在 iOS 中并不是微不足道的,因为没有公共接口可以做到这一点。但是,有一些解决方法可以完成此操作:

  • 应用唤醒时拉取历史数据:不可能,因为我不是数据的提供者,而且我将支持的大多数数据提供者不存储或提供对历史数据的访问。

  • 自己下载数据,让客户在醒来时拉取数据:不可取。这不仅需要我方面额外昂贵的基础设施(这意味着我打算向我的用户收取我打算成为免费应用程序的费用),而且一些内容提供商还需要登录凭据。我宁愿不要求我的用户的登录信息来访问他们自己可以获得的信息。

  • 如果时间戳过期,则在用户将应用程序置于前台时保存上次更新的时间戳并下载数据:这不符合我的目的,因为数据可能(并且预计会)及时快速变化。此应用程序的全部目的是定期自动下载此数据,以便用户再次打开应用程序后所有历史数据都可用。

  • 使用本地通知:与以前几乎相同。它需要用户交互来启动应用程序,应用程序的全部意义在于即使用户不使用设备也能获取这些数据。

  • 使用推送通知:由于这些只是需要用户交互才能唤醒应用程序的通知,因此它们不能用于与本地通知相同的原因。一旦应用程序唤醒,您似乎可以处理所有待处理的推送通知,但我读到您无法为这些通知定义自定义字段。

  • 使用后台任务:从技术上讲,这似乎是所有选项中最有前途的,但这仅适用于非常特定类型的应用程序。我想“报亭应用程序”是我能得到的最接近的应用程序,它实际上是为了在后台下载数据。然而,正如它的名字一样,它是用来下载“杂志或报纸问题”的。我想做的事情是否可以归类为这完全取决于应用程序审查者,我宁愿不制作可能会因技术性而被拒绝的应用程序。

所以,我的问题是:还有其他我不知道的方法吗?是否有任何应用程序已经做了类似的事情?

4

3 回答 3

1

你的评估是正确的。您唯一的两个选择是托管您自己的定期下载数据的服务(您的第二个要点)或使用 Newstand。对于Newstand,您的应用可能符合定义;它可能只取决于您如何描述应用程序。

于 2013-02-14T07:35:49.093 回答
1

你在 iOS 中唯一的选择就是使用服务器端基础设施。不怕向用户收费;如果你提供的服务真的有用,人们就会付钱。我确实知道这是很多额外的工作,等等,但这确实是唯一的方法。

报亭应用程序每天只能下载一次数据,并且它们仍然需要服务器端推送通知才能开始下载,因此您必须建立一些基础设施。不过,更重要的是,Apple 实际上对报刊亭非常严格。我已经经历过几次:您不一定必须是杂志/期刊,但您的应用程序应该主要用于内容分发。

于 2013-02-14T16:19:41.530 回答
1

我认为您还有另一种选择,即基于位置的更新,但这取决于您的用户是否定期四处走动。

参见例如http://blog.instapaper.com/post/24293729146http://blog.news.me/post/21643399885/introducing-paper-boy-automatically-download-your-news

于 2013-02-14T20:49:51.313 回答