Функция восстановления покупок - 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")
            }

Отрегулируйте по мере необходимости для ваших реальных идентификаторов продукта.

Другие вопросы по тегам