2016-09-19 2 views
2

Я использую баннер AdMob в своем приложении для одного UIViewController, и он работает. Но у меня так много просмотров, и я хочу показать баннер на каждом экране. Как реализовать баннер, который появится на каждом экране? Я пытаюсь это в моем AppDelegate.swift:Как добавить AdMob GADBannerView ко всем представлениям

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) 
}) 

но ее не работает

+2

это невозможно, вы должны определить 'BannerView' в каждом' UIViewController' –

+0

@ Özgür Ersil, вы можете отправить мне ссылку или объяснить мне почему? Спасибо –

+0

Посмотрите на одну из этих ссылок. [Stackoverflow iAdBanner между представлениями] (http://stackoverflow.com/questions/28904619/how-to-share-iad-banner-between-views-using-appdelegate) или этот [iAdExample] (https://github.com/perlfly/iAdExample) – MwcsMac

ответ

4

Создание общего баннера. Вы 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) 
} 
+0

, но здесь вы просто делаете 1 запрос баннера для каждого окна. –

+0

@ ÖzgürErsil. Только один запрос происходит после запуска приложения. Баннер будет обновляться в тот промежуток времени, который они установили на AdMob.com. Нет необходимости отправлять больше запросов. –

+3

@ DanielStorm Я получаю это предупреждение в консоли. ** Вы должны установить свойство rootViewController для > перед загрузкой запроса. ** –

0

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) 
Смежные вопросы