2013-02-14 30 views
0

我想定期制作一个应用程序,它会自动从用户定义的网站列表中下载一些数据,然后根据这些数据分析并显示历史图表和其他报告。iOS中的经常性后台任务

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

就我的研究而言,这在iOS中并不是微不足道的,因为没有公共接口来做这件事。然而,存在着一些变通方法来完成这件事:

  • 拉历史数据,当应用程序被唤醒:不可能的,因为我不是数据的提供者,而大部分的数据提供者的,我会支持唐不存储或提供对历史数据的访问。

  • 自己下载数据并让客户在唤醒时将其拉出:不可取。不仅如此,我还需要额外的昂贵基础设施(这意味着我的用户将收取我打算成为免费应用的费用),但也有一些内容提供商需要登录凭据。我宁愿不要求我的用户的登录信息来访问他们可以得到的信息。

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

  • 使用本地通知:与以前几乎相同。它需要用户交互才能启动应用程序,并且应用程序的整个要点是即使在用户不使用该设备时也能获取该数据。

  • 使用推送通知:因为这些只是需要用户交互才能唤醒应用程序的通知,所以它们不能用于与本地通知相同的原因。看起来你可以在应用程序唤醒后处理所有待处理的推送通知,但是我看过你不能为这些通知定义自定义字段。

  • 使用后台任务:这在技术上似乎是所有选项中最有希望的,但是这仅适用于特定类型的应用程序。我认为“报亭应用程序”是最接近我可以得到的,它实际上是为了在后台下载数据。但是,正如它的名称,它意味着下载“杂志或报纸问题”。无论我想要做什么都可以归类为这完全取决于应用程序审阅者,我宁愿不制作可能会因技术性而被拒绝的应用程序。

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

+0

也许这[问题](http://stackoverflow.com/questions/6245763/ios-timed-background-processing)可能会有所帮助。 – esh 2013-02-14 07:37:30

+0

@ BlackFlam3不是真的。他的要求可以通过许多不同的机制轻松满足。这个问题几乎没有我做的同样的问题。 – 2013-02-14 07:52:56

回答

1

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

+0

您是否有关于报摊应用程序特性的任何信息?你知道任何使用报亭功能的应用程序,它们并非严格意义上用于下载“杂志或报纸问题”吗? – 2013-02-14 07:54:46

1

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

报亭应用每天只能下载一次数据,而且他们仍然需要服务器端推送通知才能开始下载,因此您必须安装一些基础设施。但更重要的是,苹果对于在报摊上实际上是相当严格的。我经历过这几次:你不一定非要成为杂志/期刊,但你的应用应该主要用于内容分发。

+0

我在苹果论坛上问过,他们清楚地向报亭说不,所以就是这样。放置我自己的服务器的问题是,一些内容提供商需要登录凭据,并且我实在不想承担存储人员密码的责任。另外,我完全受内容提供商的支配,如果他们希望阻止我的服务器,那么我将不得不面对很多愤怒的客户,因为理论上甚至不需要使用我自己的服务器基础结构。所以基本上我被搞砸了。 – 2013-02-14 16:44:08

+0

听起来很喜欢它,的确..也许你可以做一个mac/win应用程序呢? – 2013-02-14 17:05:26

+0

那么,我会去的Windows/Mac/Linux /安卓/ windowsphone。唯一缺少的平台是iOS是一个耻辱。 – 2013-02-18 02:25:07