2013-05-28 81 views
2

有時候,下載失敗,我的應用程序在失敗時完成交易,正如隨處推薦的。但是,如果我完成了交易,則Store Kit無法恢復失敗的下載。而且,似乎Store Kit在下載失敗後不會自動重試下載內容,而且似乎也無法觸發下載。如果Apple託管的應用內購買內容下載失敗,該怎麼辦?

有人想出了在這種情況下做什麼?違反所有建議,並且在內容完全下載並安裝之前未完成交易?

或者我必須以編程方式恢復事務並忽略所有其他產品標識符?

+0

您是否嘗試恢復購買?我希望它能夠工作。 – KingofBliss

+0

就像你說的,我現在就這樣做。直到下載完成,我才完成交易。此外,在應用程序中,我不會將該產品標記爲已購買,直到下載完成並且下載的文件已被複制到文檔文件夾中。如果產品看起來像是已經購買的產品,會造成很大的麻煩,但是當您嘗試訪問其內容時,它並不存在。 – Jonny

回答

1

您可以在您的應用程序通過這種方式添加恢復購買的按鈕: -

//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]; 

希望這有助於你......!

+0

我的應用程序已經完成了所有這些。但是恢復交易是爲了讓用戶採取行動。例如,在已購買物品的新應用程序之後。我想要自動重新下載失敗的下載,直到它們完成。 – openfrog

+0

這個人完全錯過了你使用託管內容。我有和你一樣的問題。 – Jonny

相關問題