You can resume the download by first pausing all downloads and then resuming all downloads. Below are the helper methods that I use. Please note that I am using an instance variable containing strong references to every SKTransaction loaded.
- (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 }
source share