假设我在应用程序处于前台时调用Web服务。现在,如果用户将应用程序发送到后台,那么如何确保此Web服务调用在后台继续执行。
这是我在我的应用中使用的一段代码。
Login* login = [[Login alloc]init];
[login initiateSignInProcess];
initiateSignInProcess
有4个网络服务电话。他们很正常 功能。我正在使用AFNetworking。
如果任何服务失败,我会再次调用它,延迟下面的afnetworking代码的失败块: -
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
[self performSelector:@selector(getUserId) withObject:nil afterDelay:5];
}
现在我想知道如果用户将应用程序发送到后台,那么代码将如何执行?它会在bakcground中调用此函数直到成功吗?
答案 0 :(得分:5)
最好使用后台进程进行获取。这是解决方案[http://code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520
的精彩教程答案 1 :(得分:1)
在iOS6.x或更低版本中不可用,除非您的应用程序有特定要求在像地点,Voip,音乐等背景中运行...
然而,iOS7可以实现这一点,请考虑一下这个
答案 2 :(得分:1)
**For(large FIle Downloade use Asynchronous Method)**
NSURL *myUrl = [NSURL URLWithString:@"Enter URL HERE"];
NSURLRequest *myRequest = [NSURLRequest requestWithURL:myUrl cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
NSMutableData *myData = [[NSMutableData alloc] initWithLength:0];
NSURLConnection *myConnection = [[NSURLConnection alloc] initWithRequest:myRequest delegate:self startImmediately:YES];
**For(Small FIle Downloade use Synchronous Method)**
NSURL *myUrl = [NSURL URLWithString:@"Enter URl HERE"];
NSData *myData = [NSData dataWithContentsOfURL:myUrl];
UIImage *img = [UIImage imageWithData:myData];
add NSURLConnection Delegate in .h File
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[myData setLength:0];
}
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[myData appendData:data];
}
- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[connection release];
}
- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[connection release];
//download finished - data is available in myData.
}
答案 3 :(得分:0)
这取决于操作系统调度是否允许继续在后台运行服务或将其终止。
最好使用背景提取。这是很好的教程http://code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520
希望这可以解决您的问题。