有时候,下载失败,我的应用程序在失败时完成交易,正如随处推荐的。但是,如果我完成了交易,则Store Kit无法恢复失败的下载。而且,似乎Store Kit在下载失败后不会自动重试下载内容,而且似乎也无法触发下载。如果Apple托管的应用内购买内容下载失败,该怎么办?
有人想出了在这种情况下做什么?违反所有建议,并且在内容完全下载并安装之前未完成交易?
或者我必须以编程方式恢复事务并忽略所有其他产品标识符?
有时候,下载失败,我的应用程序在失败时完成交易,正如随处推荐的。但是,如果我完成了交易,则Store Kit无法恢复失败的下载。而且,似乎Store Kit在下载失败后不会自动重试下载内容,而且似乎也无法触发下载。如果Apple托管的应用内购买内容下载失败,该怎么办?
有人想出了在这种情况下做什么?违反所有建议,并且在内容完全下载并安装之前未完成交易?
或者我必须以编程方式恢复事务并忽略所有其他产品标识符?
您可以在您的应用程序通过这种方式添加恢复购买的按钮: -
//inside of an IBaction
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
// Then this is called
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
NSLog(@"%@",queue);
NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);
NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];
NSLog(@"received restored transactions: %i", queue.transactions.count);
for (SKPaymentTransaction *transaction in queue.transactions) {
NSString *productID = transaction.payment.productIdentifier;
[purchasedItemIDs addObject:productID];
NSLog (@"product id is %@" , productID);
// here put an if/then statement to write files based on previously purchased items
// example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
}
}
OR
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
希望这有助于你......!
您是否尝试恢复购买?我希望它能够工作。 – KingofBliss
就像你说的,我现在就这样做。直到下载完成,我才完成交易。此外,在应用程序中,我不会将该产品标记为已购买,直到下载完成并且下载的文件已被复制到文档文件夹中。如果产品看起来像是已经购买的产品,会造成很大的麻烦,但是当您尝试访问其内容时,它并不存在。 – Jonny