正在后台ios中上传图像

  • 本文关键字:图像 ios 后台 ios7 ios8
  • 更新时间 :
  • 英文 :


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

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

所以,如果有任何解决方案或例子,你能帮助我吗。

第一个问题的答案可能是肯定的,您可以在iOS允许的时间内继续上传,但为此您需要使用UIBackgroundTaskIdentifier来获得额外的时间。

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

下面提到的是组合UIBackgroundTaskIdentifier和Backgroundfetch的步骤。

首先让我们初始化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/

最新更新