【发布时间】:2012-11-16 01:27:18
【问题描述】:
我有一个应用程序,我必须在其中将大型视频上传到 Amazon s3 存储桶。我正在使用由 NSOperationQueue 管理的 NSOperations 来运行并发任务。
我在上传小视频(小于 200 Mb)时没有问题。 但问题是当我尝试上传大视频时,10 分钟后上传过程被中断。
我已经在使用beginBackgroundTaskWithExpirationHandler:^ 来获得 10 分钟的窗口。延长此超时期限的正确方法是什么?
如果我设法延长此超时时间,Apple 会拒绝该应用吗?
目前我的AppDelegate 中有以下代码,我参考链接iPhone - Backgrounding to poll for events 构建了该代码
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication* app = [UIApplication sharedApplication];
dispatch_block_t expirationHandler;
expirationHandler = ^{
bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
};
bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
}
通过这段代码,我看到后台任务永远不会被中断。正如您在过期处理程序中看到的那样,我已经启动了另一个后台任务事件,该事件导致一个无限运行的任务。即使上传完成后,我也可以编写结束后台任务的逻辑,但我对这种方法有疑问..
你们觉得呢?
这算不算黑客行为?苹果会因为以下方式拒绝该应用程序吗?
【问题讨论】:
-
bgTask = [app beginBackgroundTaskWithExpirationHandler:^(void){ [self.queue waitUntilAllOperationsAreFinished]; [app endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }];这家伙呢??
-
你们无权与愚蠢的答案和愚蠢的 cmets 辩论。老实说,这是一个值得讨论的话题。请大家,我会要求你们进行公开讨论,这样我们就可以关注每件事的细节。谢谢
-
我可以使用 NSOperationQueue 在后台上传大视频吗,苹果会拒绝我的应用吗??
-
这个问题已经变得无关紧要了——随着 iOS 7 和 NSURLSession API 的出现。
标签: objective-c ios