웹 서비스가 있고 응용 프로그램이 실행될 때마다 1 분마다 데이터를 현금화하기 위해 iPhone 응용 프로그램에서이 서비스를 주기적으로 호출하려고합니다.백그라운드 아이폰에서 webservice를 주기적으로 호출하는 방법은 무엇입니까?
나는 NSTimer을 사용하여이 서비스를 호출하는 함수를 호출하지만, 첫 번째 호출이 새 호출을 진행하기 전에 첫 번째 호출에서 데이터 구문 분석을 완료했다는 것을 어떻게 처리해야합니까? 어떻게 그렇게 할 수 있습니까?
{
NSDate *d = [NSDate dateWithTimeIntervalSinceNow: 60.0];
NSTimer *t = [[NSTimer alloc] initWithFireDate: d
interval: 10
target: self
selector:@selector(calltimer:)
userInfo:nil repeats:YES];
NSRunLoop *runner = [NSRunLoop currentRunLoop];
[runner addTimer:t forMode: NSDefaultRunLoopMode];
[t release];
}
-(void)calltimer :(id)sender
{
NSLog(@"yessss");
if(!myQueue)
{
myQueue = dispatch_queue_create("supperApp.user1025523.com", NULL);
dispatch_async(myQueue, ^{
[self getData];
});
}
}
-(void)getData
{
webserviceCaller* wsCaller = [[webserviceCaller alloc]initWithTarget:self selector:@selector(parsINVData:)];
[wsCaller getINventoryData:self.username];
[wsCaller release];
}
-(void) parsINVData:(InvData*) ret
{
//save return data in global variable
}
나는 웹 서비스에 대한 호출이 발생하지 않았다 왜 그렇게 연결을 시작하도록 요청 매개 변수와 있는 NSURLConnection을 시작 NSMutableURLRequest를 사용합니다.
타이머를 반복 설정하지 않는 것이 훨씬 더 깨끗합니다. NSURLConnection 대리자 메서드에서 수신하거나 실패 할 때 타이머를 다시 예약 할 수 있습니다. – EricLeaf
이 코드가 작동합니까? – Ramz