如何将 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 我在控制台中收到此警告。 您必须设置 > 在加载请求之前。 @DanielStorm - 我遇到了与 Museer 相同的错误。需要在发出广告请求之前设置 rootViewController。解决办法是什么?【参考方案2】:

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 属性:

暂停广告刷新 admob ios

Admob不显示广告

xcode swift admob 没有在模拟器上显示实时广告

iOS:Admob 智能横幅不占用全宽