2016-09-19 61 views
2

我在我的应用中为单个UIViewController实施了AdMob横幅,它正在工作。但我有很多意见,我想在每个屏幕上都显示一个横幅。我将如何实施将出现在每个屏幕上的横幅?我在我的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

是不可能的,你必须在每个'UIViewController' –

+0

@Özgür的Ersil定义'BannerView',你能不能给我一个链接或解释我为什么?谢谢 –

+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

创建一个共享的旗帜。你在你的AppDelegateinit,然后将其添加到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我在控制台中得到这个警告。 **您必须设置>加载请求之前。** –

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)