がおまる開発ブログ

cocos2d-xやlevelhelperを使って iPhone/Androidアプリの作り方を解説します

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

cocos2d-xにAdWhirlを導入する (iOS編)

あぷまがさんのお陰でブログのアクセス数がいつもの3倍にあがりました!

あぷまがさん!この場をお借りしてありがとうございます!


今回はcocos2d-xにAdWhirlを導入する方法をお知らせします。
結構分かり辛いですもんね〜

AdWhrilにアプリを新規登録する
AdWhirlにアクセスしてください。
s_20130124_0.png

s_20130124_1.png

s_20130124_2.png

s_20130124_3.png

s_20130124_4.png

こちらからAdWhirlのSDKをダウンロードしましょう。


AdWhirlを組み込む
SDKをそれぞれのフォルダにコピーしていきます。
「AdViewController.h」「AdViewController.m」は新規で作成しましょう!
このファイルに色々書き込んでいきます。

s_20130124_7.png

AdWhirlフォルダ内のadaptersフォルダの中身を「AdWhirlAdNetworkAdapter.h」だけにしましょう。
それ以外は削除してください。

s_20130124_10.png


他社アドネットワークのSDKを手に入れる
今回iMobileとNendを使ったサンプルです。
各社のSDKをダウンロードしてください。

今回使用したバージョンは以下の通りです。
iMobile: imobile_for_SP_app_iOS_AdWhirl_SDK_1.3.8
Nend: NendSDK_iOS1.3.2

それぞれのSDKをプロジェクトにコピーします。

iMobileの場合
s_20130124_8.png

Nendの場合
s_20130124_9.png


コードを追加する
Xcodeを起動してコードを追加していきましょう。

まず必要なフレームワークを追加します。
ビルドに必要なものは下記の通りです。
s_20130124_5.png

Other Linker Flgsに「-ObjC」「-all_load」を追加しましょう!
s_20130124_11.png


AdViewController.h、AdViewController.mを新規で作成する

s_20130124_6.png


#import <UIKit/UIKit.h>
#import "AdWhirlView.h"
#import "AdWhirlDelegateProtocol.h"
#import "NADView.h"
#import "imobileAds/IMobileAdDelegateProtocol.h"
#import "imobileAds/IMAdWhirlBannerView.h"

#define GAD_SIZE_320x50 CGSizeMake(320, 50)
#define GAD_SIZE_480x50 CGSizeMake(480, 50)

@interface AdViewController : UIViewController<AdWhirlDelegate, NADViewDelegate, IMobileAdDelegate> {
AdWhirlView *awView;
NADView *nadView;
NADView *appBankView;
}

@property (nonatomic, retain) AdWhirlView *awView;
@property (nonatomic, retain) NADView *nadView;
@property (nonatomic, retain) NADView *appBankView;

- (void)imAdViewDidFinishReceiveAd:(IMAdView *)imAdView;
- (void)imAdViewDidFailToReceiveAd:(IMAdView *)imAdView;

@end



#import "AdViewController.h"

// AdWhirlSDKキー
#define ADWHIRL_KEY @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

// Nend用キー
#define NEND_ID @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#define NEND_SPOT_ID @"xxxxx"

// AppBank用キー
#define APPBANK_ID @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#define APPBANK_SPOT_ID @"xxxxx"

// iMobike用キー
#define IMOBILE_PUD xxxx
#define IMOBILE_MEDIA_ID xxxxx
#define IMOBILE_SPOT_ID xxxxx


@interface AdViewController ()

@end

@implementation AdViewController
@synthesize awView;
@synthesize nadView;
@synthesize appBankView;

- (NSString *)adWhirlApplicationKey{
return ADWHIRL_KEY;
}

- (UIViewController *)viewControllerForPresentingModalView{
return self;
}

- (id) init {
self = [super init];
if (self != nil) {

//nend------------
nadView = [[NADView alloc] init];
[nadView setNendID:NEND_ID spotID:NEND_SPOT_ID];
[nadView setDelegate: self];
[nadView setRootViewController: self];
[nadView load: nil];

//nend------------

//appbank------------
appBankView = [[NADView alloc] init];
[appBankView setNendID:APPBANK_ID spotID:APPBANK_SPOT_ID];
[appBankView setDelegate: self];
[appBankView setRootViewController: self];
[appBankView load: nil];

//appbank------------

//adwirl----------
self.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
self.view = awView;

// 下に出したい場合はコメントアウトしてください
/*
CGRect frame = [[UIScreen mainScreen] applicationFrame];
int yPos = 430;
if (frame.size.height==568.0) { // iPhone 4inch (568 - 20 px)
yPos +=88;
}
*/
awView.frame = CGRectMake(0,0,GAD_SIZE_320x50.width, GAD_SIZE_320x50.height);

awView.delegate = self;
//adwirl----------

}
return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
}

//// AdWhirlで設定したカスタムイベント
//// nend
- (void)nend:(AdWhirlView *)adWhirlView {
[awView replaceBannerViewWith:nadView];

}

//// AdWhirlで設定したカスタムイベント
//// app bank
- (void)appbank:(AdWhirlView *)adWhirlView {
[awView replaceBannerViewWith:appBankView];

}

//// AdWhirlで設定したカスタムイベント
//// i-mobile
- (void)iMobile:(AdWhirlView *)adWhirlView {
IMAdWhirlBannerView *imAdWhirlBannerView =
[IMAdWhirlBannerView imAdWhirlBannerViewWithFrame:kAdWhirlViewDefaultFrame withDelegate:self];
[imAdWhirlBannerView setWithPublisherId: IMOBILE_PUD
mediaId:IMOBILE_MEDIA_ID
spotId:IMOBILE_SPOT_ID];
[imAdWhirlBannerView start];
}

//// nend
- (void)nadViewDidFinishLoad:(NADView *)adView{

}

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

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

// i-moible広告画像の取得が完了した時
- (void)imAdViewDidFinishReceiveAd:(IMAdView *)imAdView {
[awView replaceBannerViewWith:imAdView];
}
// i-moible広告画像の取得が失敗した時
- (void)imAdViewDidFailToReceiveAd:(IMAdView *)imAdView {
[awView rollOver];
}

-(void) dealloc {
[nadView setDelegate: nil];
[nadView release];

[appBankView setDelegate: nil];
[appBankView release];

[awView release];

[super dealloc];

}
@end



AppControllerを編集する
AppController.hとAppController.mmを編集しましょう
2行目、7行目で広告関係の変数を指定

@class RootViewController;
@class AdViewController;

@interface AppController : NSObject <UIAccelerometerDelegate, UIAlertViewDelegate, UITextFieldDelegate,UIApplicationDelegate> {
UIWindow *window;
RootViewController *viewController;
AdViewController *adViewController;

}

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) RootViewController *viewController;

@end




35行目で広告の初期化を行います。

#import "AdViewController.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

// Add the view controller's view to the window and display.
window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
EAGLView *__glView = [EAGLView viewWithFrame: [window bounds]
pixelFormat: kEAGLColorFormatRGBA8
depthFormat: GL_DEPTH_COMPONENT16
preserveBackbuffer: NO
sharegroup: nil
multiSampling: NO
numberOfSamples:0 ];

// Use RootViewController manage EAGLView
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;
viewController.view = __glView;

// Set RootViewController to window
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
{
// warning: addSubView doesn't work on iOS6
[window addSubview: viewController.view];
}
else
{
// use this method on ios6
[window setRootViewController:viewController];
}

// 広告
adViewController = [[AdViewController alloc] init];
[viewController.view addSubview: adViewController.view];

[window makeKeyAndVisible];

[[UIApplication sharedApplication] setStatusBarHidden: YES];

cocos2d::CCApplication::sharedApplication()->run();
return YES;
}



これでビルドが通れば広告が表示されると思います。
AdWhirlで表示率を切り替えてそれぞれの広告が表示されるか確認してみましょう!
s_20130124_12.png
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://gaomar.blog.fc2.com/tb.php/20-b117b08d
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。