2013-04-24 29 views
4

我找不到任何示例或StoreKit的正确处理SKDownloadStateFailed的开源项目。充其量他们显示UIAlertView。有没有什么我可以做,以编程方式重试下载?用户应该如何重新下载Apple托管的内容?SKDownloadStateFailed除show alert之外怎么办?

我发现的唯一方法是重新启动购买。但是这首先询问用户是否想要花钱。之后它会告诉用户他已经购买了它并可以免费下载。

+0

凹凸。我正在尝试使用模拟器,这可能是罪魁祸首,但是在SKDownloadStateFailed:ing之后,似乎没有办法重新开始下载,甚至没有另一次购买。 – Jonny 2013-07-24 09:17:44

回答

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 
}