#swift #xcode #admob #swift5
#swift #xcode #admob #swift5
Вопрос:
Я внедряю рекламные объявления с вознаграждением в приложении чата и использую с ним панели вкладок. У меня проблема с rewarded в том, что всякий раз, когда я вызываю функцию rewardedAd = createAndLoadRewardedAd()
viewDidLoad
и появляется объявление, когда я отклоняю объявление, функция rewardedAdDidDismiss
вызывается без проблем.
override func viewDidLoad() {
super.viewDidLoad()
timerLabelDisplay.layer.opacity = 0.0
rewardedAd = createAndLoadRewardedAd()
}
Теперь, поскольку мы все теперь viewDidLoad будет вызываться только один раз, и это не поможет мне, если я изменю панель вкладок и вернусь к ней, это означает, что мое объявление не будет загружаться. Итак, что я сделал, я вставил rewardedAd = createAndLoadRewardedAd()
viewWillAppear
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
removeAdsFreeButton.isEnabled = false
removeAdsFreeButton.backgroundColor = .gray
rewardedAd = createAndLoadRewardedAd()
}
Теперь, когда я сделал это, все кажется идеальным, когда я меняю панель вкладок и возвращаюсь назад, мое объявление о вознаграждении загружается без проблем. Однако теперь, когда объявление отключено, функция rewardedAdDidDismiss()
не вызывается, и мне нужно, чтобы она вызывалась, и я не знал почему?
вот полный код:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
removeAdsFreeButton.isEnabled = false
removeAdsFreeButton.backgroundColor = .gray
rewardedAd = createAndLoadRewardedAd()
}
override func viewDidLoad() {
super.viewDidLoad()
timerLabelDisplay.layer.opacity = 0.0
}
func createAndLoadRewardedAd() -> GADRewardedAd? {
rewardedAd = GADRewardedAd(adUnitID: "ca-app-pub-3940256099942544/1712485313")
rewardedAd?.load(GADRequest()) { error in
if error != nil {
print("Loading reward ad failed there is a problem here")
} else {
UIView.animate(withDuration: 1.0) {
self.removeAdsFreeButton.isEnabled = true
self.removeAdsFreeButton.layer.backgroundColor = UIColor(named: "ChatiwRed")!.cgColor
self.removeAdsFreeButton.layer.backgroundColor = UIColor(named: "ChatiwYello")!.cgColor
self.removeAdsFreeButton.layer.backgroundColor = UIColor(named: "ChatiwRed")!.cgColor
}
self.removeAdsFreeButton.pulseAnimation()
}
}
return rewardedAd
}
var didUserGotReward = false
func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) {
self.rewardedAd = createAndLoadRewardedAd()
print("ok now show the timer")
if didUserGotReward {
UIView.animate(withDuration: 5) {
self.timerLabelDisplay.layer.opacity = 1.0
}
timerLabelDisplay.pulseAnimation()
didUserGotReward = false
}
}
Комментарии:
1. Существует новый Api вознаграждаемой рекламы. developers.google.com/admob/ios/rewarded-migration Проверьте это.
2. @NaveedUlHassan5 да, я использую новый API, а не старый
3. @user14357836 вы нашли какое-либо решение? Я сталкиваюсь с такой же проблемой.