通过应用内购买删除广告时,此功能是否无法识别我的钥匙?

时间:2019-02-12 02:07:52

标签: ios swift ads storekit

广告正常运行。但是,当我添加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 :(得分:1)

更改此行:

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")