2012-03-29 83 views
0

我正在開發一款應用程序,該應用程序還支持通過應用程序內購買的一些功能。我提供了兩個按鈕,即Buy和Restore,意思是字面意思。在沒有購買的應用程序中恢復

我有一個非常基本的問題,如果用戶按下恢復按鈕,並且在從未購買應用內可購買產品的憑證中詢問憑證類型時該怎麼辦。我應該如何處理這種情況?我的理解告訴我,當用戶按下恢復按鈕時,我們撥打電話restoreCompletedTransactions,這將嘗試恢復購買的產品,因爲在我提到的情況下,用戶沒有購買任何產品,沒有任何解鎖。我認爲商店套件會自動處理,並提供購買選項。

這不是爲我工作。如果我使用的是從未購買應用內商品的帳戶,並嘗試進行還原,但沒有響應,則不會調用任何代理。另一方面,如果我使用已購買的賬戶進行恢復,那麼事情會很好。

任何幫助將非常感激。

謝謝。

P.S.我正在使用測試用戶和沙盒環境。

+0

你確定你實現 - (空)paymentQueue:(SKPaymentQueue *)隊列restoreCompletedTransactionsFailedWithError:(NSError *)錯誤? – 2012-03-31 08:57:14

回答

0

在這裏看到了答案: iOS in-app-purchase restore returns many transactions

你必須處理它在交易觀察者。

總之,你開始恢復過程:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

然後下面的事務觀察員被稱爲:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 
{ 
    int thisIsTheTotalNumberOfPurchaseToBeRestored = queue.transactions.count; 

    for (SKPaymentTransaction *transaction in queue.transactions) 
    { 
     NSString *thisIsProductIDThatHasAlreadyBeenPurchased = transaction.payment.productIdentifier; 

     if([thisIsProductIDThatHasAlreadyBeenPurchased isEqualToString:product1ID]) 
     { 
      //Enable product1 here 
     } 
    } 
} 
相關問題