2013-04-24 2 views
4

정확히 SKDownloadStateFailed을 다루는 예제 또는 StoreKit 기반 오픈 소스 프로젝트를 찾지 못했습니다. 기껏해야 그들은 UIAlertView를 보여줍니다. 프로그래밍 방식으로 다운로드를 다시 시도 할 수있는 방법이 있습니까? 그리고 사용자는 Apple에서 호스팅하는 콘텐츠를 어떻게 다시 다운로드해야합니까?경고 표시 이외의 SKDownloadStateFailed시 수행 할 작업은 무엇입니까?

내가 찾은 유일한 방법은 구매를 다시 시작하는 것이 었습니다. 그러나 이것은 사용자가 돈을 쓰고 싶은지 먼저 묻습니다. 이 후 사용자에게 이미 구매 한 것으로 알려주고 무료로 다운로드 할 수 있습니다.

+0

범프. 나는 시뮬레이터로 이것을 시도하고 있는데 그것은 범인일지도 모르지만 SKDownloadStateFailed : ing 후에는 다른 구매와 함께 다운로드를 재개 할 수있는 방법이없는 것으로 보인다. – Jonny

답변

0

모든 다운로드를 일시 중지 한 다음 다운로드를 모두 다시 시작하여 다운로드를 다시 시작할 수 있습니다. 다음은 내가 사용하는 헬퍼 메소드입니다. 다운로드되는 각 SKTransaction에 대한 강력한 참조를 포함하는 인스턴스 변수를 사용합니다.

- (void)pauseAllDownloads { 
    METHOD; 
    for (SKPaymentTransaction *transaction in self.transactionsBeingDownloaded) { 
     [[SKPaymentQueue defaultQueue] pauseDownloads:transaction.downloads]; 
    } 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; //stop the dl activity icon in the status bar 
} 

- (void)resumeAllDownloads { 
    METHOD; 
    if (self.transactionsBeingDownloaded.count == 0) { 
     [self restoreCompletedTransactions]; 
    } else { 
     for (SKPaymentTransaction *transaction in self.transactionsBeingDownloaded) { 
      NSLog(@"state: %i", transaction.transactionState); 
      [[SKPaymentQueue defaultQueue] resumeDownloads:transaction.downloads]; 
     } 
    } 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; //show the dl activity icon in the status bar 
}