objective-c - 上传大视频 iOS 时延长后台任务超时时间

标签 objective-c ios

<分区>

我有一个应用程序,我必须在其中将大型视频上传到 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];
}

通过这段代码,我发现后台任务永远不会被中断。正如您在到期处理程序中看到的那样,我启动了另一个后台任务事件,该事件导致无限运行的任务。尽管我可以编写逻辑来在上传完成后结束后台任务,但我对这种方法有疑问..

大家怎么看?

它是黑客攻击吗? Apple 会拒绝该应用程序的以下做法吗?

最佳答案

后台任务背后的想法是防止应用程序在后台持续运行。换句话说,如果您试图绕过 Apple 实现的限制,那么他们就有理由拒绝您的申请。

他们是否会这样做的问题只能由 Apple 来回答。但是,正如 Daij-Djan 所提到的,还有其他情况会导致您的应用程序被终止。

几个月前,我遇到过类似的情况,就是一个应用程序要上传大文件到S3 bucket。解决方案是使用分段上传来确保在您的应用程序激活时恢复上传过程。您可以阅读有关分段上传的更多信息 in the API reference .

关于objective-c - 上传大视频 iOS 时延长后台任务超时时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600947/

相关文章:

objective-c - 在 UITableView 中的 UIImageView 中从网络加载图像

objective-c - 自动核心数据迁移在 Mac OS X 10.5 上失败,但在 10.6 或 10.7 上则不会

iphone - 如果我在选择器旋转时使用完成按钮关闭 UIPickerview 的操作表,则获取空值

ios - Objective-C 中的 init 实际上做了什么?

ios - UIScrollView contentInset 不工作

iphone - 进行 Ad Hoc 分发时 Launch Image 不支持 4inch

iphone - 如何使用 Xcode 4.2 和 Storyboard使用 "Page Control"?

ios - Alamofire multipartFormData 上传不发送数据

ios - 如何向 UITableViewCell 添加自定义分隔符?

ios - 如何修复我的 UISlider 上的轨道填充图像?