Xcode配置
代码实现
// 启动后台任务
- (void)startBackgroundTask {
if (self.isDownloading) {
// 获取后台任务标识符
UIApplication *application = [UIApplication sharedApplication];
self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
// 后台任务到期时调用
[self endBackgroundTask];
}];
}
}
// 下载任务完成的回调方法
- (void)downloadTaskDidComplete {
// 检查应用程序是否在后台运行
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) {
// 结束后台任务
[self endBackgroundTask];
}
}
// 结束后台任务
- (void)endBackgroundTask {
if (self.backgroundTaskIdentifier != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskIdentifier];
self.backgroundTaskIdentifier = UIBackgroundTaskInvalid;
}
}
参考文章
Best practice: iOS background processing - Background App Refresh Task
Modern Backgrounds Tasks in iOS 13