2015-10-17 64 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