恢复购买功能 - Swift
Restore Purchases function - Swift
在我的应用中,用户可以进行两次不同的购买。
这是我的 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
的变量来检测用户 select 的产品。如果他点击购买第一个产品的按钮,变量 selectedProduct
保存值 "product1"。
问题是当用户单击“恢复购买”按钮时,应用会检查 selected 的产品是 "product1" 还是 "product2",但 selectedProduct
没有如果用户单击“恢复购买”按钮,则不会发生任何事情。
请问我该怎么办?
不要使用 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 的需要进行调整。
在我的应用中,用户可以进行两次不同的购买。
这是我的 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
的变量来检测用户 select 的产品。如果他点击购买第一个产品的按钮,变量 selectedProduct
保存值 "product1"。
问题是当用户单击“恢复购买”按钮时,应用会检查 selected 的产品是 "product1" 还是 "product2",但 selectedProduct
没有如果用户单击“恢复购买”按钮,则不会发生任何事情。
请问我该怎么办?
不要使用 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 的需要进行调整。