正在后台上传图片 ios

Uploading image in background ios

我知道有 NSURLSession class 在 iOS7 中启动,它确实有 NSURLSessionUploadTask 用于将数据上传到服务器,但我需要知道它是否会在后台模式后继续上传如果不?那么如何在后台模式下继续该任务以完成上传。

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

那么,如果有任何解决方案或示例,你们能帮我吗?

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

对于你的问题的第二部分,当应用程序不是 运行 时上传剩余的图像,你可以使用后台获取。当您启用后台获取时,应用程序会定期从网络下载和处理少量内容。所以可能通过结合 UIBackgroundTaskIdentifierBackground fetch 你可以实现在后台上传图像。

下面提到的是结合 UIBackgroundTaskIdentifier 和 Background fetch 的步骤。

首先让我们初始化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 → Select 项目文件 → 功能 → 选中后台获取复选框中启用后台模式。

有关更多信息,您可以参考下面的 link: http://mobisoftinfotech.com/resources/mguide/background-fetch-ios/