2012年9月6日木曜日

iAdとAdMobの併用

iPhoneアプリでiAdとAdMobを併用する方法をまとめます。

Xcodeを起動し,
1. プロジェクト名→Targetsを選択→"Linked Frameworks and Libraries"の+ボタンを押し,iAd.framework, AudioToolBox.framework,SystemConfiguration.framework,MessageUI.frameworkを追加する。

2.AdmobのサイトからダウンロードしたAdmob SDKの"GAD〜.h"と"libGoogleAdMobAds.a"ファイルをプロジェクトに加える。

3.下記ソースコードを入力する

・ViewController.h

#import <UIKit/uikit.h>
#import <iAd/iad.h>

#import "GADBannerView.h"


@interface ViewController : UIViewController
{
    ADBannerView *adView;
    BOOL bannerIsVisible; //iAd非表示判定用
    GADBannerView *gAdBannerView;
    BOOL bannerIsVisible2; //Admob非表示判定用
}

@end


・ViewController.m


#import 
#import "ViewController.h"

#define MY_BANNER_UNIT_ID   @"" //AdmobのPublisherIDをここに挿入

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self startiAd];

}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

//iAd,admob実装系

// iAD広告開始
- (void) startiAd {
    
    ADBannerView *banner = [[ADBannerView alloc] initWithFrame:CGRectZero];
    banner.delegate = self;
    /// banner.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    adView = banner;
    [self.view addSubview:banner];
    
    //iAdのバナーを画面の外に表示しておく
    [self moveBannerViewOffscreen];
    
}

//iAdのバナーを画面の外に表示する
- (void)moveBannerViewOffscreen{
    CGRect newBannerView = self.view.frame;
    newBannerView.origin.y = self.view.frame.size.height;
    adView.frame = newBannerView;
}

//iAdのバナーを画面の中に表示する
- (void)moveBannerViewOnscreen{
    
    CGRect newBannerView = self.view.frame;
    newBannerView.origin.y = self.view.frame.size.height - adView.frame.size.height;
    
    [UIView beginAnimations:@"BannerViewIntro" context:NULL];
    adView.frame = newBannerView;
    [UIView commitAnimations];
    
}

// iAdの広告を取得したとき
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
    
    //AdMobの広告を終了する
    [self endAdMobAd];
    
    //iAdのバナーを画面の中に表示する
    [self moveBannerViewOnscreen];
    
}

// iAdの広告が取得できなかったとき
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    
    ///iAdのバナーを画面の外に表示する
    [self moveBannerViewOffscreen];
    
    //Admobの広告を開始する
    [self startAdMobAd];
    
}

// Admobの広告を開始する
- (void) startAdMobAd {
    
    if (!bannerIsVisible2) {
        gAdBannerView = [[GADBannerView alloc]
                              initWithFrame:CGRectMake(0.0,
                                                       self.view.frame.size.height -
                                                       GAD_SIZE_320x50.height,
                                                       GAD_SIZE_320x50.width,
                                                       GAD_SIZE_320x50.height)];
        
        gAdBannerView.adUnitID = MY_BANNER_UNIT_ID;
        
        gAdBannerView.rootViewController = self;
        [self.view addSubview:gAdBannerView];
        
        // Initiate a generic request to load it with an ad.
        [gAdBannerView loadRequest:[GADRequest request]];
        bannerIsVisible2 = YES;
    }
}

// AdMobの広告を終了する
- (void) endAdMobAd {
    if (bannerIsVisible2) {
        [gAdBannerView removeFromSuperview];
        gAdBannerView.delegate = nil;
        gAdBannerView = nil;
        bannerIsVisible2 = NO;
    }
}

@end

以上のコードで,iAdが取得できた時はiAdが表示され, 取得できなかった場合はAdMobが表示されます。

 また暇があれば,他にもよく使っているコードを載せていきます。

0 件のコメント:

コメントを投稿