如何在iOS应用程序的后台继续上传?

时间:2014-06-12 11:40:51

标签: ios objective-c background-process

我有iOS应用程序,主要功能是上传图像。 我的问题是,在应用程序被解雇时,应用程序是否可以继续上传图像并与服务器通信?

由于

1 个答案:

答案 0 :(得分:2)

如果您使用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];
}