定期后台同步

问题描述 投票:7回答:2

我对iOS编程很新,现在想要实现定期后台同步,以便将我的服务器数据与客户端数据同步。我想要实现的与Androids SyncAdapter相当,您可以在其中定义时间间隔(例如每30分钟),系统将在后台自动触发定义的任务。

到目前为止,我找不到Swift 3.0的这种机制,所以我需要问一下somone是否有经验或一些暗示我如何实现这一目标。

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

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

我怎样才能做到这一点?

ios swift3 background-process synchronisation
2个回答
9
投票

有一个名为BackgroundFetch的iOS功能,您可以设置它

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

你可以设置一个minimumBackgroundFetchInterval

与上面提到的Android功能相比,这个间隔不能保证。

操作系统在黑盒中进行一些启发式操作。它奖励您使用“合理”(对OS)CPU时间/功耗以及用户经常使用。另一方面,你会因为耗尽电池而受到惩罚,如果你的应用程序从未使用过,那就更糟了。

见:Apple Documentation


或者,根据您的需要,只要用户数据在服务器端发生变化,您就可以发布Silent (push) Notification。静音推送会在不通知用户的情况下唤醒您的应用,因此您可以获取数据并通过安排本地通知来通知用户。

见:Apple Documentation


0
投票

你不能。 Apple不允许第三方应用程序具有这样的常规后台时间。您需要提出另一种方法,例如在新内容可用时从您的服务器实施silent push notification

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

© www.soinside.com 2019 - 2024. All rights reserved.