首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >周期背景同步

周期背景同步
EN

Stack Overflow用户
提问于 2016-10-30 11:29:47
回答 2查看 8.7K关注 0票数 11

我对iOS编程非常陌生,现在我想实现周期性的后台同步,以使服务器数据与客户端数据同步。我想要实现的是与Android SyncAdapter类似的功能,您可以定义一个时间间隔(例如,每30分钟一次),系统将在后台自动触发定义的任务。

到目前为止,我还没有找到SWIFT3.0的这种机制,所以我需要问一下有人是否有经验,或者给我一些提示,我是如何做到这一点的。

我想做的事情听起来很简单:

当应用程序第一次启动时,应用程序应该设置一个同步管理器,它每30分钟自动触发一次后台任务。后台任务负责同步服务器和客户端数据(使用Alamofire)。

我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-30 12:15:35

有一个名为iOS的BackgroundFetch特性,您可以为它设置

定期从网络下载和处理少量内容

您可以设置一个minimumBackgroundFetchInterval

不过,与上述Android功能相比,这种间隔并不能得到保证。

操作系统在黑匣子中做一些启发式的操作。它奖励您使用“合理”(对操作系统) CPU时间/功耗,并经常被用户使用。另一方面,你会因为耗尽电池而受到惩罚,或者(更糟糕的是)用户从未使用/打开电池。

见:苹果样品苹果文档

更新:,因为iOS13,BackgroundFetch被废弃了。

有一个类似的新API名为BGTaskBGAppRefreshTask相当于被弃用的BackgroundFetch

请参阅苹果文档

或者,根据您的需要,您可以在用户数据在服务器端发生更改时发布Silent (push) Notification。一个无声的推送唤醒了你的应用程序,而没有通知用户,这样你就可以获取数据,或者通过调度一个本地通知通知用户。

请参阅:苹果文档

票数 14
EN

Stack Overflow用户

发布于 2016-10-30 11:34:27

你不能这样做。苹果不允许第三方应用程序有这样的定期背景时间。当新内容可用时,您需要想出另一种方法,比如从服务器实现无声推送通知

正如@ekscrypto在他们的评论中指出的那样,当系统决定获取数据时,您可以使用使用后台提取来加载少量数据。但是,您无法控制抓取发生的时间。在Xcode帮助系统中搜索“机会主义地获取少量内容”以获得更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40328576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档