我发现没有正确处理 StoreKit 的示例或基于 SKDownloadStateFailed 的开源项目。充其量他们显示一个 UIAlertView 。我无法以编程方式重试下载吗?用户应该如何重新下载 Apple 托管的内容?

我找到的唯一方法是重新开始购买。但这首先询问用户是否要花钱。在此之后,它告诉用户他已经购买了它并且可以免费下载。

最佳答案

您可以通过先暂停所有下载,然后恢复所有下载来重新启动下载。以下是我使用的辅助方法。请注意,我使用了一个实例变量,其中包含对正在下载的每个 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
}

关于ios - 除了显示警报之外,在 SKDownloadStateFailed 时该怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16202834/

10-12 05:17