2015-10-17 110 views
1

在我的应用程序中,用户可以进行两次不同的购买。恢复购买功能 - 斯威夫特

这是我的paymentQueue功能:

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 
    print("Received Payment Transaction Response from Apple") 

    for transaction:AnyObject in transactions { 
     if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction { 
      switch trans.transactionState { 

      case .Purchased, . Restored: 
       print("Product Purchased/Restored") 
       SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 

       // TO DO 
       if selectedProduct == "product1" { 
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product1Purchased") 
       } else if selectedProduct == "product2" { 
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product2Purchased") 
       } 
      case .Failed: 
       print("Purchased Failed") 
       SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 
       break 
      default: 
       break 
      } 
     } 
    } 
} 

我创建了一个名为selectedProduct变量来检测用户选择其产品。如果他点击按钮购买第一个产品,变量selectedProduct保存值“product1”。

问题是当用户点击恢复采购按钮,应用程序检查所选产品是“product1”还是“product2”,但如果用户点击“恢复采购”按钮,selectedProduct没有任何价值, 。

我该怎么办?

+1

您不应该使用'selectedProduct'来查看购买或恢复的内容。查看交易内容以了解购买或选择的内容。 – rmaddy

+0

感谢您的快速回答! “交易”是什么意思? – fredericdnd

+1

你的'transaction'变量(实际上是你的'trans'变量)。 – rmaddy

回答

1

请勿使用变量(如selectedProduct)来确定购买或恢复了哪种产品。在SKPaymentTransaction的内部查看所需的信息。

 case .Purchased, . Restored: 
      print("Product Purchased/Restored") 
      SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 

      if trans.payment.productIdentifier == "product1" { 
       NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product1Purchased") 
      } else if trans.payment.productIdentifier == "product2" { 
       NSUserDefaults.standardUserDefaults().setBool(true, forKey: "product2Purchased") 
      } 

根据需要调整您的实际产品ID。

+0

非常感谢你的兄弟! – fredericdnd