c# - iOS 中的重复性后台任务

标签 c# ios objective-c xamarin.ios background-process

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

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

就我的研究而言,这在 iOS 中并非微不足道,因为没有用于执行此操作的公共(public)接口(interface)。但是,有一些解决方法可以完成此操作:

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

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

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

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

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

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

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

最佳答案

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

关于c# - iOS 中的重复性后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14869701/

相关文章:

ios - *仅*从 UITextView 观察键盘通知?将 UITextView 传递给 "object"参数不起作用

ios - UISplitScreenController 具有非常多(超过 20 个)详细 View

iphone - 调试时键盘会永远在 iPhone 应用程序上弹出

c# - 在 C# 中签署 POST 表单以上传到 Amazon S3

c# - 重载转换运算符的转换规则

c# - 构建允许将函数作为参数传入的通用 c# 函数

ios - swift 和 Xcode。添加到 TabBarController 时所有 UIViewController 都会变黑

c# - WinForms ListView 中的可变高度行

iOS:如果应用程序在后台并且本地通知到达;哪个方法会自动调用?

iphone - iOS 5 中的 NSAttributedString 设置文本字体和背景