我有一个应用程序,我必须将大型视频上传到亚马逊s3存储桶.我正在使用由NSOperationQueue监管的NSOperations来运行并发任务.
上传小视频(小于200 Mb)时我没有问题.但问题是当我尝试上传大型视频时,10分钟后上传过程中断.
我已经 beginBackgroundTaskWithExpirationHandler:^习惯了10分钟的窗户.我可以延长此超时期限的正确方法是什么?
如果我以某种方式设法延长此超时,Apple会拒绝该应用吗?
目前我在我的内容中有以下代码AppDelegate,我建立了指向iPhone的链接- 用于轮询事件的背景
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication* app = [UIApplication sharedApplication];
dispatch_block_t expirationHandler;
expirationHandler = ^{
bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
};
bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
}
Run Code Online (Sandbox Code Playgroud)
通过这段代码,我看到后台任务永远不会中断.正如您在到期处理程序中看到的那样,我发起了另一个后台任务事件,该事件导致无限运行的任务.尽管如此,我可以在上传完成后编写逻辑来结束后台任务,但我对这种方法有疑问.
你们有什么感想?
无论如何都是黑客攻击吗?Apple会拒绝该应用程序采用以下方法吗?
后台任务背后的想法是防止应用程序在后台持续运行。换句话说,如果您试图绕过苹果公司设置的限制,那么他们就有理由拒绝您的申请。
他们是否会这样做的问题只能由苹果来回答。然而,正如 Daij-Djan 提到的,在其他情况下您的应用程序可能会被终止。
几个月前,我遇到过类似的情况,即应用程序必须将大文件上传到S3存储桶。解决方案是使用分段上传来确保只要您的应用程序处于活动状态,上传过程就会恢复。您可以在 API 参考 中阅读有关分段上传的更多信息。
| 归档时间: |
|
| 查看次数: |
3085 次 |
| 最近记录: |