我尝试实施奖励广告-Rewarded Ads New APIs (Beta)。视频已加载,并且isReady
属性在几秒钟内更改为true
。
我有一个按钮,用户按下该按钮,就会出现“奖励视频”
当用户按下按钮时,此功能会触发
func presentRewardAd(from viewController: UIViewController) {
if rewardedAd.isReady {
rewardedAd.present(fromRootViewController: viewController, delegate: self)
}
}
问题是
我要隐藏按钮,直到视频
isReady == true
,并准备好显示按钮。所以我想在rewardedAd.isReady
更改时得到通知。到目前为止,我尝试了什么:
class CustomRewardAd: GADRewardedAd {
private var observation: NSKeyValueObservation?
override init(adUnitID: String) {
super.init(adUnitID: adUnitID)
observation = observe(\.isReady, options: [.old, .new]) { object, change in
print("isReady changed from: \(change.oldValue!), updated to: \(change.newValue!)")
}
}
}
我也尝试了这个Using Key-Value Observing in Swift但结果相同。
但是
changeHandler
永远不会被调用。难道我做错了什么?谢谢!
最佳答案
我找到了解决方案,虽然不理想,但是可以!也许这可以在将来帮助某人。
当新的奖励请求完成时,isReady
属性设置为true
或false
取决于响应是什么。
private func createAndLoadRewardedAd() -> GADRewardedAd {
let rewardedAd = GADRewardedAd(adUnitID: "ca-app-pub-3940256099942544/1712485313")
rewardedAd.load(GADRequest()) { [weak self] error in
guard let self = self else { return }
self.videoIsReady?(rewardedAd.isReady) // already set
}
return rewardedAd
}
别客气!
关于ios - AdMob-isReady属性更改时获取通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57872125/