Эта функция не распознает мой ключ при удалении рекламы через покупку в приложении? - PullRequest
0 голосов
/ 12 февраля 2019

Реклама работает нормально.Однако, когда я добавляю оператор if else, чтобы выяснить, заплатил ли пользователь за удаление рекламы, оно не появляется, даже если они не заплатили за удаление рекламы.Единственное печатное заявление, которое я получаю, это «что-то называется», поэтому я чувствую, что с ключом «Куплено» что-то не так.Я проверил, чтобы убедиться, что они совпадают.Я что-то не так сделал с ключом?

func showAd() {

    if let purchased = UserDefaults.standard.value(forKey: "Purchased") as? Bool{
        if purchased == true{
            interstitial = nil
            print("there is no ad!!!!")
        }else{
            self.interstitial = createInterstitialAd()
            print("there is an ad!!!")
        }
    } else {
        print("it called something")
    }

}

Редактировать: вот код, в котором я установил ключ.

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions{
        if transaction.transactionState == SKPaymentTransactionState.purchased{
            //User Payment Successfull
            UserDefaults.standard.set(true, forKey: "Purchased")
            print("payment was successfull")
            SKPaymentQueue.default().finishTransaction(transaction)
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "homeVC")
            self.navigationController?.pushViewController(controller, animated: true)

        }else if transaction.transactionState == .failed{
            //User Payment failed
            print("transaction failed...")
            SKPaymentQueue.default().finishTransaction(transaction)
            if let error = transaction.error {
                print("\(error.localizedDescription)")
            }
        } 
    }
}

1 Ответ

0 голосов
/ 12 февраля 2019

Измените эту строку:

if let purchased = UserDefaults.standard.value(forKey: "Purchased") as? Bool

На:

if let purchased = UserDefaults.standard.bool(forKey: "Purchased")

Это делает так, что purchased не является обязательным.Таким образом, if purchased всегда будет вызываться.

На самом деле, я бы избавился от if let, поскольку это не может быть ноль:

let purchased = UserDefaults.standard.bool(forKey: "Purchased")
...