当一个App进入后台的时候,例如音乐App,它会在锁屏界面依然播放;新闻客户端也会在后台刷新最新的数据。在iOS中后台刷新有着诸多的限制,要遵守严格的使用规范,有三种方式可以达成后台刷新的目的。

Background Fetch – 定期获取小量数据

Background Fetch 的功能如标题描述,是用来定期的获取小量数据的功能。所谓定期的时间控制完全由iOS系统控制,取决于你使用app的习惯和频率或者设置刷新频率。小量数据是说明他的获取数据的时间窗口和处理时间是有限的,你只能用它来获取小量的更新数据,比如微博的后台刷新…

为了使用这个功能你需要在Capabilities中打开Background fetch选项

后台刷新频率

1
2
3
4
5
6
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.setMinimumBackgroundFetchInterval(2)
// 系统控制刷新频率
//UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true
}

代理方法

如果将获取频率设置为UIApplicationBackgroundFetchIntervalMinimum,系统将决定何时去调取后台刷新的相关方法,即如下方法

1
2
3
4
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// 通知系统完成刷新操作
completionHandler(UIBackgroundFetchResult.newData)
}

Debug

添加新Scheme,可以先复制当前Scheme