奖励广告关闭后如何播放音频

时间:2021-04-16 17:46:00

标签: swift admob admob-rewardedvideoad

我想在奖励广告完成并从广告屏幕上消失时播放音频。

这是我的代码:-

  var rewardedAd: GADRewardedAd?

    override func viewDidLoad() {
        super.viewDidLoad()
        rewardedAd?.fullScreenContentDelegate = self
        createAndLoadRewardAd()

    }

领取奖励:

if let ad = rewardedAd {
                  ad.present(fromRootViewController: self) {
                    let reward = ad.adReward
                    print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
                    Player.shared.play()
                  }
                } else {
                  let alert = UIAlertController(
                    title: "Rewarded ad isn't available yet.",
                    message: "Sound Cannot Be play without watching Rewarded ad. Try after few moments or check Internet Connection",
                    preferredStyle: .alert)
                  let alertAction = UIAlertAction(
                    title: "OK",
                    style: .cancel,
                    handler: { [weak self] action in
                        
                        
                    })
                  alert.addAction(alertAction)
                  self.present(alert, animated: true, completion: nil)
                }

问题是在关闭广告视图之前开始播放声音。 我想在关闭广告视图后播放声音。我也尝试了以下协议但它不起作用,我的意思是没有任何反应

extension SoundViewController: GADFullScreenContentDelegate {
    
    func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
        print("ad showing")
    }
    func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
        createAndLoadRewardAd()
        print("ad closed")
    }
    
    func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
        print(error.localizedDescription)
    }
    
    func createAndLoadRewardAd() {
             GADRewardedAd.load(
                withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest()
              ) { (ad, error) in
                if let error = error {
                  print("Rewarded ad failed to load with error: \(error.localizedDescription)")
                  return
                }
                print("Loading Succeeded")
                self.rewardedAd = ad
              }
        
        
        }

}

更新 1

Audio is Started at this state

音频在此状态下启动。但是我想在广告视图关闭后开始播放音频。

1 个答案:

答案 0 :(得分:0)

抱歉回答太短,我假设您使用的是最新的 AdMob SDK。您可以简单地执行以下操作:

AdMob 为任何符合 rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarn reward: GADAdReward) 的视图控制器提供了一个名为 GADRewardedAdDelegate 的方法。

您可以简单地添加如下:

func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarn reward: GADAdReward) {
    //User has earned the reward.
    //Play the sound.
    let reward = reward
    print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
    self.dismiss(animated: true, completion: nil)
    Player.shared.play()
}

此代码将在用户获得奖励后触发。如果您希望无论用户是否获得奖励都播放声音,那么您可以将其放入 adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) 方法中。如果您使用 adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) 方法,您将无法检查用户是否确实获得了奖励。