Swift集成Admob插屏广告后无法隐藏状态栏的问题求助
解决AdMob插屏广告无法隐藏状态栏的问题
根据控制台提示和你的代码,问题核心是AdMob广告无法获取状态栏控制权,导致状态栏遮挡关闭按钮。以下是两种可行的修复方案:
前提配置
首先确保Info.plist中已正确设置:
- 添加
View controller-based status bar appearance字段,设置值为YES(iOS 7及以上版本的状态栏控制依赖此项)
方案一:让广告视图控制器接管状态栏控制
完全遵循官方提示的思路,通过重写childViewControllerForStatusBarHidden将状态栏控制权交给AdMob的广告视图控制器:
- 在你的ViewController中添加属性记录当前广告控制器:
var currentAdViewController: UIViewController?
- 重写状态栏权限相关属性:
override var childViewControllerForStatusBarHidden: UIViewController? { return currentAdViewController }
- 完善
GADFullScreenContentDelegate回调,更新广告控制器引用:
extension YourViewController: GADFullScreenContentDelegate { func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { currentAdViewController = ad.presentingViewController setNeedsStatusBarAppearanceUpdate() } func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { currentAdViewController = nil setNeedsStatusBarAppearanceUpdate() } // 处理广告展示失败的情况,避免状态残留 func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { currentAdViewController = nil setNeedsStatusBarAppearanceUpdate() } }
方案二:手动控制状态栏显示/隐藏
如果你更倾向于自主控制状态栏状态,可以通过以下方式实现:
- 在你的ViewController中添加状态控制属性:
var shouldHideStatusBar = false
- 重写状态栏显示逻辑:
override var prefersStatusBarHidden: Bool { return shouldHideStatusBar } // 可选:设置状态栏切换的动画效果 override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { return .fade }
- 在广告回调中更新状态栏状态:
extension YourViewController: GADFullScreenContentDelegate { func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { shouldHideStatusBar = true setNeedsStatusBarAppearanceUpdate() } func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { shouldHideStatusBar = false setNeedsStatusBarAppearanceUpdate() } func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { shouldHideStatusBar = false setNeedsStatusBarAppearanceUpdate() } }
注意:两种方案都依赖你已正确设置interstitial?.fullScreenContentDelegate = self(你的代码中已完成此步骤),确保代理方法能被正常调用。
内容的提问来源于stack exchange,提问作者Jessica
相关产品推荐
相关产品推荐

