在应用购买观察者中恢复调用addPayment而不是恢复

时间:2015-08-24 15:33:38

标签: ios swift in-app-purchase

在其他设备上恢复应用内购买时,请恢复购买而非恢复来电

  • 按钮已正确连接

  • 如果先前已按下购买(即使已取消),即使该应用已进入后台,也会解决此问题。

  • 仅在其他设备上恢复购买时出现

  • 自动续订订阅

按下购买

SKPaymentQueue.defaultQueue().addTransactionObserver(self)
SKPaymentQueue.defaultQueue().addPayment(pay as SKPayment)

Storekit

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
    println("Purchasing")

恢复按下

SKPaymentQueue.defaultQueue().addTransactionObserver(self)
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()

Storekit应该致电

func paymentQueueRestoreCompletedTransactionsFinished(queue: SKPaymentQueue!) {
    println("transactions restored")

实际上是打电话(如果先前没有点过购买,则在另一台设备上打电话)

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
    println("Purchasing")

更新

添加

dispatch_after(dispatchTime, dispatch_get_main_queue(), {

             SKPaymentQueue.defaultQueue().addTransactionObserver(self)

        })

            SKPaymentQueue.defaultQueue().restoreCompletedTransactions()

对于大部分时间的恢复按下修复,可以使用更永久的解决方案

1 个答案:

答案 0 :(得分:0)

您应该尽快设置事务观察器(调用application:didFinishLaunchingWithOptions:时),而不是在处理恢复按钮时设置。根据{{​​3}}:

  

您的应用程序应在应用程序初始化期间将观察者添加到付款队列。如果没有观察员附加到队列,则支付队列不会将其待处理事务列表与Apple App Store同步,因为没有观察者响应更新的事务。