乍眼一看,google的admob里似乎找不到开屏广告的相关内容,但实际上藏在了英文文档里面。
// SDK介入部分省略
在SDK加载完毕后就立即预加载一个广告实例GADAppOpenAd
备用:
GADAppOpenAd.load(withAdUnitID: unitId,
request: GADRequest(),
orientation: .portrait) { (ad: GADAppOpenAd? , err: Error?) in
// 将ad缓存起来备用
}
在启动页面完成后即根据情况展示广告:
ad.present(fromRootViewController: root)
ad.fullScreenContentDelegate = root
Simulator Screen Shot - iPhone 8 - 2020-10-23 at 14.58.15.png
记得实现代理方法:
// MARK: - GADFullScreenContentDelegate
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
// 广告展示失败
}
func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
// 广告已展示
}
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
// 广告已关闭
}
注意adDidDismissFullScreenContent(_ ad:)
方法有个坑,可能会出现不回调的情况,导致流程卡住,需自行监听rootViewController的presentedViewController是否还在(如果你用一个新window来管理广告展示的话,更要注意这个问题);