dispatch_async를 통해 storeViewController loadProductWithParameters를 호출 중입니다. 시간 제한 값을 설정하여 X 초 동안 결과를 가져온 다음 포기하려고 시도 할 수 있습니까?SKStoreProductViewController loadProductWithParameters에 대한 시간 제한을 설정할 수 있습니까?
3
A
답변
1
loadProductWithParameters를 직접 호출하는 대신 아래의 클래스 메서드를 사용하여 자체 타임 아웃을 구현했습니다. dispatch_after
및 __block
변수 덕분에 시간이 초과되었습니다. loadProductWithParameters가 completionBlock라고하지 않고 ... 희망이 도움이 아이튠즈에 노래를 구매에서 내 사용자를 중지 않기 때문에
+ (void)loadProductViewControllerWithTimeout:(NSTimeInterval)timeout
storeKitViewController:(SKStoreProductViewController *)storeKitViewController
parameters:(NSDictionary *)parameters
completionHandler:(void (^)(BOOL result, NSError *error))completionHandler {
__block BOOL hasReturnedOrTimedOut = NO;
[storeKitViewController loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (!hasReturnedOrTimedOut) {
hasReturnedOrTimedOut = YES;
if (completionHandler) completionHandler(result, error);
}
});
}];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeout * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if (!hasReturnedOrTimedOut) {
hasReturnedOrTimedOut = YES;
if (completionHandler) completionHandler(NO, nil); // Or add your own error instead of |nil|.
}
});
}
내 최신 응용 프로그램 업데이트는 애플에 의해 거부되었다. 내가 지금처럼 acomplished 한
+0
답변 해 주셔서 감사합니다. 나는 iOS 개발자를 많이하지 않고 있지만 테스트 해 볼 기회가 있다면 그렇게 할 것입니다. – runamok
0
: dismissAndShowError
방법은 dismissViewControllerAnimated
를 실행하고 오류와 경고 표시
__block BOOL timeoutOrFinish = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(30 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if(!timeoutOrFinish) {
timeoutOrFinish = YES;
[self dismissAndShowError];
}
});
[storeViewController loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError * _Nullable error) {
if(timeoutOrFinish) {
return;
}
timeoutOrFinish = YES;
//[[NetworkManager sharedManager] showNetworkActivityIndicator:NO];
if(error) {
[self dismissAndShowError];
}
}];
[self.view.window.rootViewController presentViewController:storeViewController animated:YES completion:nil];
.
기본적으로 플래그를 전환하는 별도의 타이머 (내 경우에는 30 초)가 있습니다. 그 시간이 지나도 저장소가 아직로드되지 않은 경우 저장소를 닫고 오류가 표시됩니다. 그렇지 않으면 완료 (취소, 완료 및 오류)가 호출되며 상태에 따라 모든 작업을 처리합니다.
관련 문제
- 1. BufferReader에 대한 시간 제한을 설정할 수 있습니까?
- 2. HttpWebRequest.GetRequestStream에서 어떻게 시간 제한을 설정할 수 있습니까?
- 3. Julia : 시간 제한을 eval에 설정할 수 있습니까
- 4. PhantomJS 내의 Ajax 요청에 대한 시간 제한을 설정할 수 있습니까
- 5. 모든 인턴 시험에 대한 시간 제한을 어떻게 설정할 수 있습니까?
- 6. 코드 블록에 대한 시간 제한을 설정할 수 있습니까?
- 7. C#에서 UdpClient의 시간 제한을 설정할 수 있습니까?
- 8. Qt의 waitForConnected에 대한 시간 제한을 설정할 수 없습니다.
- 9. 소켓 connect() 호출에 대한 시간 제한을 설정할 수 없습니다.
- 10. Windows Azure 웹 사이트에 대한 IP 제한을 설정할 수 있습니까?
- 11. MySQL에서 어떻게 속성에 제한을 설정할 수 있습니까?
- 12. AStyle에서 라인 제한을 설정할 수 있습니까?
- 13. PHP5 : 안전 모드 문제로 시간 제한을 설정할 수 없습니다.
- 14. 어떻게 액세스 소켓 때 fread에 대한 시간 제한을 설정할 수 있습니까?
- 15. WebSocket4Net 웹 소켓에 대한 작업 시간 제한을 지정할 수 있습니까
- 16. Task.Run에서 CancellationToken을 사용하여 시간 제한을 설정할 수 없습니다.
- 17. VB6에서 시간 제한을 구현할 수 있습니까?
- 18. 동일한 표시기에 현재 시간과 버퍼 제한을 모두 설정할 수 있습니까?
- 19. Google 드라이브에서 특정 시간 동안 액세스 권한이없는 파일을 공유 한 사용자의 시간 제한을 설정할 수 있습니까?
- 20. Backbone.js : Backbone.sync 구현에 대한 시간 제한을 정의하십시오.
- 21. SKStoreProductViewController loadProductWithParameters를 백그라운드에서 실행할 수 있습니까?
- 22. 헤더의 게시물 요청 크기 제한을 설정할 수 있습니까?
- 23. Java에서 프로세스의 CPU 및 메모리 제한을 어떻게 설정할 수 있습니까?
- 24. Wix IIS 확장을 사용하여 IP 제한을 설정할 수 있습니까?
- 25. Java HttpURLConnection에서 데이터 전송에 대한 시간 초과를 설정할 수 있습니까?
- 26. Hazelcast는 캐시 항목에 대한 시간 제한을 지원합니까?
- 27. Access VBA : RecordSource를 설정할 때 쿼리 시간 제한을 변경하는 방법
- 28. AdomdConnection에 대한 연결 시간 제한을 어떻게 설정합니까?
- 29. 별표로 MAX_AGI_CONNECT에 대한 시간 제한을 설정하십시오.
- 30. 시간 제한을 설정할 수있는 푸시 알림/대체 방법
행운을 빌어 요? – Leonardo
@ 레오나르도 - 알렉시스 프리볼라는 테스트를 원한다면 가능한 해결책을 가지고 있습니다. – runamok