我想在奖励广告完成并从广告屏幕上消失时播放音频。
这是我的代码:-
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
音频在此状态下启动。但是我想在广告视图关闭后开始播放音频。
答案 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)
方法,您将无法检查用户是否确实获得了奖励。