问题描述
我在应用中加载了 2 个不同的 UITabbarController
标签和 2 个不同的 UIViewControllers
。我正在考虑将 adMob 代码移动到它自己的类中,这样我只需加载一次奖励广告即可在任何地方使用。
这是我想出来的,但是当我按下按钮展示广告时,我收到以下错误消息:
GADFullScreenPresentingAd:广告未能呈现全屏内容 有错误提供的视图控制器未呈现..
这是admob类的代码
import GoogleMobileAds
class GDS: UIViewController,GADFullScreenContentDelegate {
var adMobRewardedAd: GADRewardedAd?
override func viewDidLoad() {
super.viewDidLoad()
setupRewardedAd()
}
func setupRewardedAd() {
let request = GADRequest()
GADRewardedAd.load(withAdUnitID: "XXXXXXXXXXXXXXXX",request: request,completionHandler: { (ad,error) in
if let error = error {
print("Failed to load rewardedAds ad with error: \(error.localizedDescription)")
return
}
print("GDS - RewardedAd Loading Succeeded: :\(Date())")
self.adMobRewardedAd = ad
self.adMobRewardedAd?.fullScreenContentDelegate = self
}
)
}
func showRewardedAd(medalsToReward: Int) {
if let ad = adMobRewardedAd {
ad.present(fromrootViewController: self,userDidEarnRewardHandler: {
let reward = ad.adReward
// Todo: Reward the user.
print("\n=== showRewardedAd - reward User with ===\n")
}
)
} else {
print("1 showRewardedAd: Ad wasn't ready")
presentAdError()
}
}
func presentAdError() {
let alertController = UIAlertController(title: "Rewarded ad Failed to present",message: "Please Try Again Later.",preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK",style: .cancel,handler: {( action: UIAlertAction ) in
/// print("cancel pressed")
}))
self.present(alertController,animated: true)
}
func adDiddismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
setupRewardedAd()
}
func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("adDidPresentFullScreenContent: Ad did present full screen content.")
}
func ad(_ ad: GADFullScreenPresentingAd,didFailToPresentFullScreenContentWithError error: Error) {
print("GADFullScreenPresentingAd: Ad Failed to present full screen content with error \(error.localizedDescription).")
/// Todo: Add Error Message?
presentAdError()
}
}
这就是我在我的标签上调用/设置 admob 广告加载的方式(通过按下按钮)
class VCLibrary: UIViewController {
let loadAdmob = GDS()
override func viewDidLoad() {
super.viewDidLoad()
/// .. some table loading code
loadAdmob.setupRewardedAd()
}
这就是我通过 tableviewHeader 上的按钮调用广告的方式
func tableView(_ tableView: UITableView,viewForHeaderInSection section: Int) -> UIView? {
///... Some code
button.addTarget(self,action: #selector(vcLibraryShowAdsButton(_:)),for: .touchUpInside)
///... More code
}
@objc private func vcLibraryShowAdsButton(_ sender: UIButton) {
loadAdmob.showRewardedAd(medalsToReward: xxx))
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)