在背景ios上载图象

时间:2015-03-18 14:23:35

标签: ios7 ios8

我知道在iOS7中启动了NSURLSession类,并且它确实有NSURLSessionUploadTask用于将数据上传到服务器,但我需要知道它是否会在后台模式下继续上传,如果没有?然后该怎样做才能在后台模式下继续完成上传任务。

之前我们可以使用beginBackgroundTaskWithExpirationHandler:和endBackgroundTask:iOS6将继续执行该任务最多10分钟,但在iOS 7及更高版本中,它几乎不会运行3分钟(据我所知)。

所以如果可以的话,请你帮我解决任何解决方案或示例。

1 个答案:

答案 0 :(得分:1)

您的第一个问题的答案可能是肯定的,您可以继续上传iOS允许的时间,但是您需要使用 UIBackgroundTaskIdentifier 来获取额外的时间。< / p>

对于在应用未运行时上传剩余图像的问题的第二部分,您可以使用背景提取。启用后台获取时,应用程序会定期从网络下载和处理少量内容。因此,通过组合 UIBackgroundTaskIdentifier 后台提取,您可以实现在后台上传图像。

下面提到了组合UIBackgroundTaskIdentifier和后台提取的步骤。

首先让我们初始化 UIBackgroundTaskIdentifier

-(void) beginBackgroundUploadTask
{
    if(self.backgroundTask != UIBackgroundTaskInvalid)
    {
        [self endBackgroundUploadTask];
    }

    self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

        [self endBackgroundUploadTask];

    }];
}

一旦后台任务从规定的时间内用完,我们就应该使后台任务失效并结束。

-(void) endBackgroundUploadTask
{
    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask ];
    self. backgroundTask = UIBackgroundTaskInvalid;
}

不要忘记在Xcode中启用后台模式→选择项目文件→功能→选中后台获取复选框。

有关详细信息,请参阅以下链接: http://mobisoftinfotech.com/resources/mguide/background-fetch-ios/