有時候,下載失敗,我的應用程序在失敗時完成交易,正如隨處推薦的。但是,如果我完成了交易,則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