ios - 如何在iOS app后台继续上传?

标签 ios objective-c background-process

我有一个主要功能是上传图片的 iOS 应用程序。 我的问题是,当应用关闭时,应用可以继续上传图片并与服务器通信吗?

谢谢

最佳答案

如果您使用 NSURLConnection,您可以使用 UIBackgroundTaskIdentifier 来保持您的连接,即使在应用程序被发送到后台时也是如此:

声明您的后台任务标识符,以便您可以在类实现中的任何位置访问它,例如在 .m 文件的顶部:

@implementation MyClass {

    UIBackgroundTaskIdentifier backgroundTaskID;
}

创建连接:

NSURLRequest *request = [NSURLRequest requestWithURL: aURL];

NSURLConnection *uploadConnection = [NSURLConnection connectionWithRequest:request delegate:self];

backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

    // Cancel the connection in case of expiration
    [uploadConnection cancel];
}];

在连接完成/失败后,在这两个 NSURLConnectionDelegate 方法中结束后台任务:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

    // Handle a fail

    [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    // Handle a success

    [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID];
}

关于ios - 如何在iOS app后台继续上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24183441/

相关文章:

ios - 如何异步下载图片并保持顺序?

objective-c - iOS 崩溃报告服务/替代 MacDevCrashReports.com

ruby-on-rails - 在 Heroku 上发送通知电子邮件的廉价(免费阅读)方式是什么?

javascript - vue.js:定期重复后台查询的位置

iOS7 在后台应用程序切换器中的错误屏幕截图

由于手机号码无效,iOS Swift 调用崩溃

objective-c - 创建多向 ScrollView 的技巧

iphone - iPad 应用程序的按安装付费机制?

iphone - 关卡 - Cocos2d

iphone - 如何从 JSON 数据请求访问 NSDictionary 的内容