我有iOS应用程序,主要功能是上传图像。 我的问题是,在应用程序被解雇时,应用程序是否可以继续上传图像并与服务器通信?
由于
答案 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];
}