Функция восстановления покупок - 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
чтобы определить, какой продукт выбирает пользователь. Если он нажмет на кнопку, чтобы купить первый продукт, переменная selectedProduct
удерживайте значение "product1".
Проблема заключается в том, что когда пользователь нажимает кнопку "Восстановить покупки", приложение проверяет, является ли выбранный продукт "продукт1" или "продукт2", но selectedProduct
не имеет значения, если пользователь нажимает кнопку "Восстановить покупки", поэтому ничего не происходит.
Как я могу сделать, пожалуйста?
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")
}
Отрегулируйте по мере необходимости для ваших реальных идентификаторов продукта.