我对iOS编程很陌生,现在想要实现定期后台同步,以便将我的服务器数据与客户端数据同步。我想要实现的与Androids SyncAdapter
相当,您可以在其中定义时间间隔(例如每30分钟),系统将在后台自动触发定义的任务。
到目前为止,我找不到Swift 3.0的这种机制所以我需要问一下somone是否有经验或一些暗示我如何实现这一目标。
我想做的事听起来很简单:
当应用首次启动时,应用应设置同步管理器,该管理器每30分钟自动触发一次后台任务。后台任务负责同步服务器和客户端数据(使用Alamofire)。
我该怎么做?
答案 0 :(得分:9)
有一项名为BackgroundFetch
的iOS功能,您可以将其设置为
定期从网络下载和处理少量内容
您可以设置minimumBackgroundFetchInterval
。
与上述Android功能相比,不保证此间隔。
操作系统在黑盒中做了一些启发式操作。它奖励您使用“合理”(对OS)CPU时间/功耗以及用户经常使用。另一方面,你会因为耗尽电池而受到惩罚,如果你的应用程序从未使用过,那就更糟了。
或者,根据您的需要,只要用户数据在服务器端发生更改,您就可以发布Silent (push) Notification
。静音推送会在不通知用户的情况下唤醒您的应用,因此您可以获取数据并通过安排本地通知来通知用户。
答案 1 :(得分:0)
你不能。 Apple不允许第三方应用程序具有这样的常规后台时间。当新内容可用时,您需要提出另一种方法,例如从服务器实施silent push notification。
正如@ekscrypto在评论中指出的那样,可以使用后台获取来在系统决定获取时加载少量数据。但是,您无法控制何时进行提取。搜索"有机会地获取少量内容"在Xcode帮助系统中获取更多信息。