我对 iOS 编程还很陌生,现在想实现一个周期性的后台同步来同步我的服务器数据和客户端数据。我想要实现的与 Android 的 SyncAdapter
相当,您可以在其中定义一个时间间隔(例如每 30 分钟),系统将在后台自动触发定义的任务。
直到现在我还没有找到 Swift 3.0 的这种机制,所以我需要询问是否有人有经验或对我如何实现这一点有一些提示。
我想做的事情听起来很简单:
当应用第一次启动时,应用应该设置一个同步管理器,它每 30 分钟自动触发一次后台任务。后台任务负责同步服务器和客户端数据(使用Alamofire)。
我该怎么做?
最佳答案
有一个名为 BackgroundFetch
的 iOS 功能,您可以为其设置
regularly downloads and processes small amounts of content from the network
您可以设置一个minimumBackgroundFetchInterval
。
与提到的 Android 功能相比,这个间隔不能保证。
操作系统在黑盒中进行一些启发式操作。它奖励您使用“合理的”(对操作系统而言)CPU 时间/功耗以及用户经常使用。另一方面,您会因耗尽电池或(甚至更糟)用户从未使用/打开过而受到惩罚。
更新:自 iOS13 起,BackgroundFetch
已弃用。
有一个类似的新 API,名为 BGTask
,BGAppRefreshTask
相当于已弃用的 BackgroundFetch
。
参见 Apple Docs
或者,根据您的需要,您可以在服务器端用户数据发生变化时发布静默(推送)通知
。静默推送会在不通知用户的情况下唤醒您的应用,因此您可以获取数据并可能通过安排本地通知来通知用户。
关于ios - 定期后台同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40328576/