2012-04-03 71 views
4

我正在開發一個應用程序,允許用戶使用In App Purchase購買新的級別/功能。 據我所知,根據我的研究,我可以通過傳遞一組ProductID來使用SKProductsRequest從iTunesConnect獲取In App Purchase產品。然後我必須檢查用戶是否已經購買了任何產品並據此處理UI。我將購買的產品ID存儲在NSUderDefaults中,並根據退回的產品進行檢查。我不太確定這個過程,因爲用戶可能打算在某個階段刪除並重新安裝應用程序,我們將失去NSUserDefaults以及用戶的購買歷史記錄。在應用程序購買 - 存儲/獲取用戶購買歷史| iOS

有什麼辦法可以從蘋果服務器獲取用戶信息?或者我必須保存用戶購買記錄。

在此先感謝

P.S. I followed this tutorial

+0

「 - (空)paymentQueue:(SKPaymentQueue *)隊列「updatedTransactions:(NSArray *)transactions」應該在項目恢復時返回SKPaymentTransactionStateRestored,並且您可以使用「originalTransaction」屬性獲取有關以前購買的信息,但我不確定這是否正確返回。我在這裏讀到「http://stackoverflow.com/questions/6806766/skpaymenttransactionstaterestored-doesnt-get-called-when-in-app-purchase-is-bei」它沒有被返回 – Basel 2012-04-03 12:36:26

+0

如果你依賴獲取信息,你限制您的應用程序的使用需要網絡連接。如果您找到某種方式來記錄所有權,那麼用戶可以在「離開電網」(遠離網絡連接到互聯網)的情況下工作。 – 2014-03-07 21:36:55

回答

5

你可以得到一個數組包含所有產品ID的用戶已經購買這樣的..即使用戶卸載/重新安裝應用程序

- (void) checkPurchasedItems 
{ 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
}//You Call This Function 

//Then this delegate Function Will be fired 
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 
{ 
    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]; 
    } 

} 
+0

謝謝,我會測試並讓你知道它是否有效。並肯定會upvote你的答案並設置爲選定 – 2012-04-03 16:37:13