2012年9月18日火曜日

iPhoneの横長(LandScape)画面でAdMob表示

AdMobを使用する際,AdMobバナーのサイズ指定で以下のものが選択できる。

GAD_SIZE_120x600
GAD_SIZE_300x250
GAD_SIZE_320x50
GAD_SIZE_468x60
GAD_SIZE_728x90

このうち,320x50がiPhoneの縦画面(Portrait)用のサイズで,あとはiPad用だったり,よくわからないものになる。

そして,「横画面(LandScape)用がないじゃないか!」となるわけで,実際ネットでさがしても皆さんどうしているのかよくわかりませんでした。

ところが昨日,Smart Bannersというものがあることを知りました。
画面サイズに合わせてバナーのサイズを設定できる優れものとのことです。

Smart Bannersについてはこちら

さっそく実装してみました。

// Admobの広告を開始する
- (void) startAdMobAd {
    NSLog(@"startAdMobAdd");
    if (!self.bannerIsVisible2) {
        NSLog(@"startAdMobAdd in");
        
        CGPoint origin;
        if( self.view.frame.size.height < self.view.frame.size.width){
            origin = CGPointMake(0.0,
                                 self.view.frame.size.height -
                                 CGSizeFromGADAdSize(
                                                 kGADAdSizeSmartBannerLandscape).height);
        }else{
            origin = CGPointMake(0.0,
                                 self.view.frame.size.width -
                                 CGSizeFromGADAdSize(
                                                     kGADAdSizeSmartBannerLandscape).height - self.navigationController.navigationBar.frame.size.height);
        }
        self.gAdBannerView = [[GADBannerView alloc]
                              initWithAdSize:kGADAdSizeSmartBannerLandscape
                              origin:origin];
        
        self.gAdBannerView.adUnitID = MY_BANNER_UNIT_ID;
        
        self.gAdBannerView.delegate = self;
        
        self.gAdBannerView.rootViewController = self;
        [self.view addSubview:self.gAdBannerView];
        
        [self.gAdBannerView loadRequest:[GADRequest request]];
        
        self.bannerIsVisible2 = YES;
    }
}


※よくわからないですが,状況によって,viewのheightとwidthが入れ替わっていることがあるので,if文で分岐しています。
※NavigationControllerを使用しているので,originの高さから引いたりしています。(これもなぜか縦横逆転時は引くとおかしくなりました)



やっつけでなんとなくできた感があり,よくわからないこともありますが,動いたからいいかなと。

重要なのは,

initWithAdSize:kGADAdSizeSmartBannerLandscape

のようにしてサイズを指定するところです。

ちなみに縦長だと,

kGADAdSizeSmartBannerPortrait

のようになります。


同じ悩みを持っている方の助けになればと思います。
(他の方法があったりして・・・)

0 件のコメント:

コメントを投稿