ios - 通过应用内购买删除广告时,此功能是否无法识别我的密钥?
问题描述
广告效果很好。但是,当我添加 if else 语句来确定用户是否付费删除广告时,即使他们没有付费删除广告,广告也不会弹出。我得到的唯一打印声明是“它叫什么”,所以我觉得键“Purchased”有问题。我检查以确保它们匹配。我是不是把钥匙弄错了?
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)")
}
}
}
}
解决方案
更改此行:
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")
推荐阅读
- swift - 对符合从公共协议继承的内部协议的对象没有自动完成功能
- android - Flutter 中的 AppBar 不显示
- python - 在 vb.net 上运行 Python 脚本
- excel - VBA/Excel 中的蒙特卡罗模拟
- java - 异常 JSF 从数据库中删除
- javascript - VueJS 应用程序无法在 Internet Explorer 上加载
- python - Keras 中 LSTM 的多变量数据
- c# - Jarvis 算法(礼品包装)或 graham-scan - C#
- nginx - Ngnix 1.12/Jenkins 2.151:您的反向代理设置似乎已损坏
- c - C - 我的字符串在一段时间声明后被修改