UITabBarでタブ切り替えの際に毎回AdMobをロードさせない方法

スポンサーリンク

本当は毎回ViewControllerにAdMobを表示させるコードを書くのが面倒で、AppDelegateでどうにか楽にできないかなーと調べていたら、自分が思っていた以上に素敵なやり方がありました。

毎回コードを書く必要がなく、かつUITabBarでタブを使っている場合タブ切り替えの際に毎回AdMobをロードされていたのですが、これもやらなくてすむ方法。

AppDelegate.m に以下を追記

    // *UITabBarControllerを取得する
    UITabBarController *tabBarController = (UITabBarController*)self.window.rootViewController;
    
    GADBannerView *_gadBannerView;
    _gadBannerView = [[GADBannerView alloc]
                      initWithFrame:CGRectMake(0.0,
                                               20,
                                               GAD_SIZE_320x50.width,
                                               GAD_SIZE_320x50.height)];
    
    // Specify the ad's "unit identifier." This is your AdMob Publisher ID.
    _gadBannerView.adUnitID = @"MY_BANNER_UNIT_ID";
    
    // Let the runtime know which UIViewController to restore after taking
    // the user wherever the ad goes and add it to the view hierarchy.
    _gadBannerView.rootViewController = tabBarController;
    [tabBarController.view addSubview:_gadBannerView];
    
    // Initiate a generic request to load it with an ad.
    [_gadBannerView loadRequest:[GADRequest request]];

ちなみに GADBannerView.h は以前書いた「iOSアプリにAdMobとGoogleAnalyticsを導入するカンタンな方法」の通り、(アプリ名)-Prefix.pch でincludeしています。

これで毎回ソースを書かなくても、すべてのViewでAdMobが表示される、はず。

さらには、「iOSアプリにAdMobとGoogleAnalyticsを導入するカンタンな方法」で書いた時とくらべて、AdMobとGoogleAnalyticsを表示させる時、ViewController.m に追加しないといけないのは以下だけになりました。

#import "AppDelegate.h"
    //GoogleAnalyticsのページ名
    self.trackedViewName = @"TOPページ";

どっかのタイミングで、GoogleAnalyticsのページ名を追記するのも動的化したいなあ。

こちらを参考にさせて頂きました。
アプリ開発:UITabBarControllerへの効果的な広告の貼り方 | JOHN DOE
プログラマメモ2: UITabBarControllerなアプリの場合の広告(admob)の置き方

スポンサーリンク