当用户睡觉iPhone或应用程序进入后台模式时,我需要有关如何在我的应用程序下载中保留应用内购买项目的帮助。有没有人有任何想法?
答案 0 :(得分:1)
在 applicationDidEnterBackground:中定义 BackgroundTaskWithExpirationHandler ,如下所示:
// ...
UIBackgroundTaskIdentifier bti;
// ...
- (void)applicationDidEnterBackground:(UIApplication *)application {
bti = [application beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if(bti != UIBackgroundTaskInvalid) {
[application endBackgroundTask:bti];
bti = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// DO or CONTINUE RESUMED DOWNLOAD HERE
dispatch_async(dispatch_get_main_queue(), ^{
if(bti != UIBackgroundTaskInvalid) {
[application endBackgroundTask:bti];
bti = UIBackgroundTaskInvalid;
}
});
});
}
要了解它是如何运作的,请下载我为您制作的sample project。
git clone GIT中://github.com/jacekmigacz/BTWEH.git
...然后按 主页按钮 以触发 applicationDidEnterBackground:。
想法是将您的下载任务委托给另一个特权线程,并将您的应用程序保持在后台状态,而不是让操作系统暂停它。