0

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

我有一个 RESTful Web 服务,为不同的用户提供任务。每个用户都有一个 iOS 应用程序,当服务器/服务向该用户分配任务时,它应该会自动更新。

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

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

所以,我猜有两种不同的方法可以解决这个问题:

1. 每 xx 分钟进行一次后台获取(使用 NStimer?)并检查是否有新任务。

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

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

2. 使用推送通知。

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

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

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

因此,如果有 Internet 连接,我更愿意检查我的“后台服务”,如果是 - 开始上传一些数据。

我知道这不是一个具体的问题,但我认为有很多用户有相同的要求,如果有人能帮助我找出以最佳和实用的方式解决这个问题的最佳方法,那就太好了。

提前致谢!

4

1 回答 1

1

后台更新听起来很棒,直到您意识到 Apple 严重限制了它们:您可以要求尽可能频繁地更新,但 iOS 根据用户打开您的应用程序的频率和时间来决定该值的实际含义。苹果认为后台更新应该在用户打开你的应用程序之前发生,所以最新的内容就在那里,而不是在后台主动运行。

您的推送通知解决方案是一个更好的解决方案,特别是如果您使用 CloudKit 来使用CKSubscription和订阅记录更改事件CKNotificationInfo。如果您这样做,您将自动在您的应用程序中收到推送消息,因此您只需很少的工作即可获得所需的信息。您可以阅读我的教程,了解有关订阅 CloudKit 以获取推送消息的更多信息。

于 2015-12-11T22:58:29.510 回答