仅当应用程序进入iOS-7中的后台模式时,视频才会下载最多10分钟

时间:2014-02-12 07:14:15

标签: ios iphone objective-c ios7

我正在尝试下载将大型视频(400 mb)加载到背景中...直到 iOS-7中使用Xcode-5 的视频结束。但是下载10或5分钟后停止。

我编写了如下代码,我设置了“后台获取模式为YES ”。我的代码有什么问题。

参考1:https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

参考2:enter image description here

问题:如何保存我的网址请求直到我的视频以后台模式下载?

感谢Advence。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication *app = [UIApplication sharedApplication];
    UIBackgroundTaskIdentifier m_backgroundTaskId;
     m_backgroundTaskId = [[UIApplication sharedApplication]
                          beginBackgroundTaskWithExpirationHandler:^(void) {
                              m_isWentBackground = YES;
                              [m_dataController saveUnfineshedDownoadsToFile];
                              [[UIApplication sharedApplication]
                               endBackgroundTask:m_backgroundTaskId];
                              m_backgroundTaskId = UIBackgroundTaskInvalid;
                          }];

 }

3 个答案:

答案 0 :(得分:2)

你说错了,beginBackgroundTaskWithExpirationHandler会给你最多10分钟的下载时间,但如果你想要真正的后台下载,你必须查看后台传输服务

你有2个教程:

答案 1 :(得分:1)

UIApplication的beginBackgroundTaskWithExpirationHandler应该用作“任务修整器”。您的代码没有任何问题,但这个代码的目的就是问题。 此操作将保持活动最多10分钟左右,操作系统决定任务的运行时间。如果您要下载400mb视频,则不是您需要的。 您应该考虑另一种方法来执行此任务 - 这不是在后台操作中。 Apple自己的定义的后台操作不能持续超过10分钟。

也许,执行排队的后台操作会逐渐附加数据,直到您拥有完整的视频?或者当app不在另一个线程的后台时执行此操作?

默认情况下,400mb视频听起来不像移动设备应该做的事情。

答案 2 :(得分:1)

除非您的应用属于以下类型之一,否则后台处理在ios中最多只允许10分钟。

  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  • 随时向用户通知其位置信息的应用,例如导航应用
  • 支持互联网协议语音(VoIP)的应用
  • 需要下载和处理新内容的报亭应用
  • 从外部附件接收定期更新的应用

请参阅以下内容以获取更多信息..

http://docs.xamarin.com/guides/cross-platform/application_fundamentals/backgrounding/part_3_ios_backgrounding_techniques/ios_backgrounding_with_tasks/

https://stackoverflow.com/a/9738707/919545