2011-06-02 62 views
1

我想在我的服務器中記錄購買歷史記錄。(iphone)inApp購買何時在自己的服務器上登錄購買歷史記錄?

問題是,
直到購買完成我無法登錄了。(因爲購買可能會失敗)
但是,如果我購買的完成後,記錄它,用戶可以停止應用程序和應用程序可能無法發送購買歷史消息到服務器。

我原本以爲用戶驗證收據時(當我的服務器從蘋果服務器得到收據驗證時)「記錄購買歷史」。
但用戶可能會多次通過收據驗證階段而未實際完成購買? (我不知道這件事)

有推薦的方式來存儲應用程序內購買歷史服務器模型?

+0

如果你是阻止當用戶在應用程序內購買正使UI,一種解決方案是購買後成功完成,然後才使得UI更新您的服務器(通過用活動指標去除一些覆蓋圖)。 – 2011-06-02 09:01:52

回答

0
  1. 購買完成後,您可以使用NSUserDefaults臨時保留購買日誌,然後將其同步到服務器。
  2. 您可以阻止用戶界面,直到購買完成並將購買日誌推送到服務器。
+0

主頁按鈕退出應用程序的情況如何? – eugene 2011-06-02 09:27:43

+0

如果您使用選項1並且用戶退出應用程序,您的日誌仍將保留在NSUserDefaults中。它不受終止應用程序的影響。 – 2011-06-02 09:30:45

+0

這是一個簡單的教程,介紹如何使用NSUserDefaults保存/檢索數據:http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/ – 2011-06-02 09:31:24

0

購買交易完成

之前如果aplication變爲無效,您應該註冊到自己的服務器,「交易」試了採購過程,當應用程序被激活

對於您必須使用SKPaymentTransaction :

[[SKPaymentQueue defaultQueue] addPayment:payment];

保存到自己的服務器,如果全成

SKPaymentTransaction *transaction = <# The current payment #>; 
SKPaymentQueue *queue = [SKPaymentQueue defaultQueue]; 

[defaultQueue finishTransaction:transaction;] 

如果不是

[defaultQueue restoreCompletedTransactionsWithApplicationUsername