2014-10-03 38 views
6

我在應用程序中購買了應用程序內購買產品,而iOS8的新產品是「延期」交易,部分描述如下:a tech note應用程序應該如何處理延期的SKPaymentTransaction?

我瞭解它的功能,以反映交易狀態被推遲。但是,我應該在方法-(void)transactionDeferred:(SKPaymentTransaction *)transaction中放置什麼來暫時忽略交易?

我是否只更新UI? UI的內容應該是什麼?我是否需要用「您的購買延期」等商品來替換價格標籤?我認爲沒有辦法來測試這個,至少我沒有看到我的沙盒測試賬戶。如果有辦法通過這個過程,看看它是如何工作的,那對我來說會更有意義。

回答

14

什麼我做的是:

  1. 停止指示動畫
  2. 激活恢復按鈕
  3. 顯示一個警告:

等待審批
謝謝!您可以繼續使用Altershot,而您的購買正等待您父母的批准。

我看了WWDC 14的視頻。蘋果說你不應該阻止用戶界面,並允許再次點擊購買按鈕。我想我們需要這個以防家長錯過警報,所以孩子可以再發一次。

我所知道的是,我們不應該呼籲推遲交易方法如下:

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

+8

該文檔顯示「您的應用程序應該在調用finishTransaction後才能成功處理事務並解除用戶購買的功能。」這表明您在狀態爲SKPaymentTransactionStateDeferred時不需要調用finishTransaction。 – JulianSymes 2014-11-09 12:30:41

+0

您應該等待FAIL或PURCHASED。您現在應該在延期中調用finishTransaction。 – Pichirichi 2015-02-12 14:46:01

+0

@Pichirichi謝謝,我更新了我的答案。 – 2015-02-15 13:05:31

2

代碼波紋管可以讓你檢查,如果你想賣的產品ID是在延遲模式。用它來相應地更新UI。

if ([[SKPaymentQueue defaultQueue].transactions count] > 0) { 
    for (SKPaymentTransaction *transaction in [SKPaymentQueue defaultQueue].transactions) { 
     if ([@"your.product.id" isEqualToString:transaction.payment.productIdentifier]) { 
      if (transaction.transactionState == SKPaymentTransactionStateDeferred) { 
       // update UI that you are still waiting for parent approval. You'll get "PURCHASED" if parent approved or "FAILD" if parent declined or 24 hours passed since request. 
      } 
      break; 
     } 
    } 
} 
相關問題