Функция rewardedAdDidDismiss не вызывается

#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 вы нашли какое-либо решение? Я сталкиваюсь с такой же проблемой.