URL 요청이 일괄 전송 된 다음 결과를 수신하는 '포수'클래스가 있습니다. 페이스 북의 그래프 API SDK를 통해이 작업을 수행하므로 실제 NSURL을 제어 할 수 없습니다. 내 문제는 모든 요청이 되돌아 오기 전까지 다음 결과 프로토콜을 실행하지 않는다는 것입니다.하지만 3G를 통해 특히 수백 개가 돌아 왔을 때 항상 돌아 오는 것은 아닙니다. 주어진 요청에 대해 '포기'하는 좋은 방법은 무엇입니까? FB api에 익숙하지 않은 사람들을 위해 실제 요청이 작동하는 방식은 facebook 객체를 초기화 한 다음 facebook 객체에서 데이터를 요청하고 return delegate를 지정하는 것입니다. 따라서 각각의 개별 요청에 대해 returnDelegate (포수)가 있습니다. 각 요청마다 고유하게 초기화 할 수 있습니다.iOS 용 페이스 북 API로 요청 시간 제한
UPDATE : 어느 정도의 시간이 경과하면 위임 객체를 신호합니다 위에서 논의한 바와 같이
- (FBRequest*)requestWithMethodName:(NSString *)methodName
andParams:(NSMutableDictionary *)params
andHttpMethod:(NSString *)httpMethod
andDelegate:(id <FBRequestDelegate>)delegate {
NSString * fullURL = [kRestserverBaseURL stringByAppendingString:methodName];
return [self openUrl:fullURL
params:params
httpMethod:httpMethod
delegate:delegate];
}
- (FBRequest*)openUrl:(NSString *)url
params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod
delegate:(id<FBRequestDelegate>)delegate {
[params setValue:@"json" forKey:@"format"];
[params setValue:kSDK forKey:@"sdk"];
[params setValue:kSDKVersion forKey:@"sdk_version"];
if ([self isSessionValid]) {
[params setValue:self.accessToken forKey:@"access_token"];
}
[self extendAccessTokenIfNeeded];
FBRequest* _request = [FBRequest getRequestWithParams:params
httpMethod:httpMethod
delegate:delegate
requestURL:url];
[_requests addObject:_request];
[_request addObserver:self forKeyPath:requestFinishedKeyPath options:0 context:finishedContext];
[_request connect];
return _request;
}
- (void)connect {
if ([_delegate respondsToSelector:@selector(requestLoading:)]) {
[_delegate requestLoading:self];
}
NSString* url = [[self class] serializeURL:_url params:_params httpMethod:_httpMethod];
NSMutableURLRequest* request =
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:kTimeoutInterval];
[request setValue:kUserAgent forHTTPHeaderField:@"User-Agent"];
[request setHTTPMethod:self.httpMethod];
if ([self.httpMethod isEqualToString: @"POST"]) {
NSString* contentType = [NSString
stringWithFormat:@"multipart/form-data; boundary=%@", kStringBoundary];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[self generatePostBody]];
}
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
self.state = kFBRequestStateLoading;
self.sessionDidExpire = NO;
}
요청 클래스 란 무엇입니까? 일부 코드? – paulmelnikow
@noa가 방금 일부를 추가했습니다. 그것을 이해하는 데 도움이 필요합니다. 특정 시간에 도달 한 후 대리인에게 메시지를 보내는 각 요청에 리터럴 타이머를 추가하는 해킹 방법이 있습니까? – JoshDG
물론, NSTimer가 그렇게 할 수 있다고 생각합니다. 동시에 요청을 실행하면 모든 요청에 대해 하나의 타이머를 사용할 수 있습니다. – paulmelnikow