2014-10-03 52 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; 
     } 
    } 
} 
相关问题