簡體   English   中英

iOS應用程序內購買(耗材) - 服務器超時

[英]iOS In-App Purchase (Consumable) - Server Timeout

我對應用內購買的特定情況有疑問。

我們的應用程序中有購買硬幣的消耗品:

  • 使用IAP購買$ .99硬幣包
  • 我們向我們的服務器發送請求以記錄購買並將硬幣添加到他們的帳戶(這些硬幣在多個設備之間共享,我們的服務器在這里工作)
  • 完成IAP交易

問題是,如果對我們服務器的請求超時或失敗,我們該怎么辦? 用戶花了錢,但永遠不會得到硬幣。 如果他們試圖再次購買,它會給他們一個錯誤,說購買沒有下載。

我看過“恢復交易”選項,但不知道如何在此處應用它。 我寧願在應用程序的某個地方沒有按鈕。

不要擔心這個應用程序尚未發布,這個應用程序是用C#編寫的MonoTouch,但歡迎Objective-C的答案。

恢復交易就可以了。 它只是重新下載購買。 看看這里的第五篇文章:

http://monogame.codeplex.com/discussions/359109

以下是實現它的代碼:

InAppPurchaseManager> MySKPaymentObserver:

    public override void PaymentQueueRestoreCompletedTransactionsFinished (SKPaymentQueue queue)
        {
            foreach(SKPaymentTransaction transaction in queue.Transactions)
            {

                #if DEBUG
                Console.WriteLine("Restoring Transaction " + transaction.Payment.ProductIdentifier);
                #endif
                theManager.restoreTransaction(transaction);
            }
        }

以下是如何調用游戲中的代碼:

 app = new InAppPurchaseManager ();
 app.LoadStore();
 SKPaymentQueue.DefaultQueue.RestoreCompletedTransactions();

我的方法是在NSUserDefaults中保存失敗的事務。 因此,每當應用程序來自后台時,它會檢查任何失敗事務的用戶默認值,然后再次重試。

我不確定它是否正確。 但是,我想知道是否有更好的方法來做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM