如何将 AdMob GADBannerView 添加到每个视图
Posted
技术标签:
【中文标题】如何将 AdMob GADBannerView 添加到每个视图【英文标题】:How to add an AdMob GADBannerView to every view 【发布时间】:2016-09-19 12:16:18 【问题描述】:我正在我的应用中为单个 UIViewController
实施 AdMob 横幅,它正在工作。但是我有很多视图,我想在每个屏幕上显示一个横幅。我将如何实现将出现在每个屏幕上的横幅?我正在我的AppDelegate.swift
中尝试这个:
dispatch_async(dispatch_get_main_queue(),
print("Google Mobile Ads SDK version: \(GADRequest.sdkVersion())")
// bannerView.frame = CGRectMake(0, 0, 320, 50)
// self.bannerView.adSize = kGADAdSizeBanner
self.bannerView.adUnitID = "ca-app-pub-MY_ID"
bannerView.rootViewController = self.window
self.bannerView.loadRequest(GADRequest())
self.window?.addSubview(self.bannerView)
)
但它不起作用
【问题讨论】:
不可能,你必须在每个UIViewController
中定义BannerView
@Özgür Ersil ,你能给我发个链接或者解释一下原因吗?谢谢
查看这些链接之一。 *** iAdBanner between views 或这个iAdExample
@ÖzgürErsil 不一定。您只需为每个视图控制器定位横幅。检查我的答案:***.com/a/39575849/2108547
【参考方案1】:
创建共享横幅。您将 init
放入您的 AppDelegate
中,然后将其添加到您希望在其上放置横幅的 UIViewController
中:
class AppDelegate: UIResponder, UIApplicationDelegate, GADBannerViewDelegate
var window: UIWindow?
var adBannerView = GADBannerView()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
adBannerView.adUnitID = "YourAdUnitID"
adBannerView.delegate = self
adBannerView.load(GADRequest())
adBannerView.isHidden = true
return true
func adViewDidReceiveAd(_ bannerView: GADBannerView!)
adBannerView.isHidden = false
func adView(_ bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!)
adBannerView.isHidden = true
您希望在每个UIViewController
中有一个横幅:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
override func viewDidLoad()
super.viewDidLoad()
addBannerToView()
func addBannerToView()
appDelegate.adBannerView.adSize = kGADAdSizeBanner
appDelegate.adBannerView.rootViewController = self
appDelegate.adBannerView.frame = CGRect(x: 0.0,
y: view.frame.height - appDelegate.adBannerView.frame.height,
width: view.frame.width,
height: appDelegate.adBannerView.frame.height)
view.addSubview(appDelegate.adBannerView)
【讨论】:
但在这里您只需为每个窗口发出 1 个横幅请求 @ÖzgürErsil 一旦应用程序启动,只会发生一个请求。横幅将按照他们在 AdMob.com 上设置的任何时间间隔刷新。无需发送更多请求。 @DanielStorm 我在控制台中收到此警告。 您必须设置SWIFT 3
func showAds(viewAds:GADBannerView,viewController:UIViewController)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.adBannerView.adSize = kGADAdSizeBanner
appDelegate.adBannerView.rootViewController = viewController
appDelegate.adBannerView.frame = CGRect(x: 0,
y: 0,
width: viewAds.frame.width,
height: viewAds.frame.height)
viewAds.addSubview(appDelegate.adBannerView)
showAds(viewAds: adseHere, viewController: self)
【讨论】:
是否可以在每个重复项目上显示不同的广告? 不同的广告是什么意思? 我在每个重复项目中都收到相同的广告。我想在每个重复项目上显示每个不同的广告。 ***.com/questions/62485567/… 如果您在此处发布答案,我们将不胜感激。提前致谢以上是关于如何将 AdMob GADBannerView 添加到每个视图的主要内容,如果未能解决你的问题,请参考以下文章
iOS:google admob 横幅不适合 320x50 GADBannerView
AdMob 错误 - 必须在调用 loadRequest 之前设置 GADBannerView 的 rootViewController 属性: