如何让我的应用程序“更新” - 后台获取?

时间:2015-12-11 22:52:38

标签: ios background-fetch

我正在寻找一种如何让我的应用“upToDate”的好方法。这些是我的要求:

我有一个RESTful Web服务,其中包含针对不同用户的任务。每个用户都有一个iOS应用程序,当服务器/服务为该用户分配任务时,应用程序将自动更新。

因此,首先创建了一个手动“同步”按钮,用于检查新任务。使用Alamofire获取数据,并更新UI。

但是,如果有新任务,我的目标是自动同步。

所以,猜测有两种不同的解决方法:

1。每隔xx分钟进行一次背景提取(带有NStimer?)并检查是否有新任务。

在这里查看该教程后: http://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial我不确定背景提取是否是解决问题的好方法。在这种情况下,应用程序使用调度程序,检查一次是否有新的更新,而不是每xx分钟。

所以在我的情况下,我会在AppDelegate中创建一个NStimer(可能在 applicationDidEnterBackground 中)并检查每个xx分钟的新数据(但是当有3天没有任何新任务时,那将是不必要的电池消耗,或?)

2。使用推送通知。

我的另一个想法是使用推送通知,因此当有新任务时,生成推送通知,手动启动同步。在我看来,使用更少的电池,因为他只会在有新任务时才开始同步。

关于使用后台服务的一般问题

没关系,如果用户完成任务,一些数据应该自动上传到服务器。通常没有问题,手动同步生病检查是否有要上传的内容。但是,如果没有互联网连接(在上传之前检查不当),用户不按“手动同步”,该怎么办。

所以我更愿意在我的“后台服务”办理登机手续,如果生病了,可以上网,如果是的话 - 开始上传一些数据。

我知道这不是一个特定的问题,但我觉得有很多用户有相同的要求,如果有人可以帮助我找到最好的方法以最好和最实际的方式解决这个问题,那就太好了。

提前致谢!

1 个答案:

答案 0 :(得分:1)

背景更新听起来很棒,直到您意识到Apple严重限制它们:您可以要求尽可能频繁地更新,但iOS会根据用户打开您应用的频率以及何时这样做来决定该值的实际含义。 Apple认为后台更新是在用户打开您的应用程序之前应该发生的事情,因此最新内容就在那里,而不是在后台主动运行的内容。

您的推送通知解决方案更好,特别是如果您使用CloudKit使用CKSubscriptionCKNotificationInfo订阅记录更改事件。如果你这样做,你会自动在你的应用程序中获得推送消息,这样你就可以用很少的工作得到你想要的东西。 You can read my tutorial for more information on subscribing to CloudKit to get push messages.