cheka.jp 超不定期で更新する写真達。お口直しにどうぞ。

cocos2d-xでNendとiADの広告を表示する

アプリ開発をしていて避けては通れない広告対応です。
objectiv-cで開発している場合は問題無いですが、cocos2d-xの場合は少し設定が必要になります。

Nendの評判が良いようですが、海外でダウンロードされた場合の対応を考えると複数の広告サービスを併用する必要があります。
Admobのメディエーションサービスを利用すると国別に使い分けることが出来るので、
1.日本国内はiAdとNendを併用
2.海外はiAdとAdmobを併用
の用に設定して利用してみたいと思います。

環境準備

それぞれの広告サービスが利用できる状態で、Admobのメディエーションも設定済の前提で話を進めます。
まだの人はサービス申し込みと設定を先に行って下さい。

SDKのダウンロード

それぞれのサービスから利用するSDKのダウンロードを行って下さい。

SDKの追加

先に不要なアドオンを削除します。
GoogleAnalyticsServicesiOSを削除して下さい。

GoogleAdMobAdsSdkiOS-x.x.x/Add-ons/GoogleAnalyticsServicesiOS_x.x

ダウンロードしたSDKをXcodeプロジェクトへ追加します。
フォルダをドラッグアンドドロップで直接追加して下さい。

  • GoogleAdMobAdsSdkiOS-x.x.x
  • LibAdapterIAd/libAdapterIAd.a
  • NendSDK_iOS/AdMobMediationAdapter/libAdapterNend.a
  • NendSDK_iOS/Nend/NendAd
ライブラリ追加

追加後はこんな感じです。

配置後

フレームワークの追加

TargetのBuild SettingsにSDKが依存しているフレームワークを追加して下さい。

  • AdSupport.framework(RequiredをOptionalに変更)
  • AudioToolbox.framework
  • AVFoundation.framework
  • CoreGraphics.framework
  • CoreTelephony.framework
  • iAd.framework
  • MessageUI.framework
  • Security.framework
  • StoreKit.framework
  • SystemConfiguration.framework
フレームワークの追加場所

追加後はこんな感じです。

フレームワークの追加後

Linker Flagsの追加

Other Linker Flagsに-ObjCを追加します。

Linkerの設定

ここまできたら一度ビルドしてチェックして下さい。
エラーになる場合はSDKの追加漏れ、Linker Flagsの追加漏れ、フレームワークの追加漏れを確認して下さい。
「This file requires ARC support」と表示される場合はGoogleAnalyticsServicesiOSが追加されているので削除して下さい。
*間違って追加した場合はLibrary Search PathsをチェックしてGoogleAnalyticsServicesiOSも削除して下さい。

GoogleAnalyticsServicesiOSの削除

広告を表示するコードを記述する

AppController.hの編集

//ヘッダインポート
#import "GADBannerView.h"

AppController.mmの編集


・・
#import "CCEAGLView.h"

//cocos2d-JSと連携するためにスコープの範囲をグルーバルにする
static GADBannerView *_gadView = nil;

@implementation AppController
・・
//didFinishLaunchingWithOptionsにロジックを追加する
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
・・
    cocos2d::Director::getInstance()->setOpenGLView(glview);
    //ここから追加部分
    CGPoint adPos;
    GADAdSize adSize;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        adSize = kGADAdSizeBanner;
        adPos = CGPointMake( 0.0, viewController.view.frame.size.height - GAD_SIZE_320x50.height);
    } else {
        adSize = kGADAdSizeLeaderboard;
        adPos = CGPointMake( 0.0, viewController.view.frame.size.height - GAD_SIZE_728x90.height);
    }
    _gadView = [[[GADBannerView alloc] initWithAdSize:adSize origin:adPos] autorelease];
    _gadView.adUnitID = @"ca-app-pub-xxx";
    _gadView.rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
    GADRequest *request = [GADRequest request];
    request.testing = YES;
    [_gadView loadRequest:request];
    [viewController.view addSubview:_gadView];
    [_gadView setRootViewController:viewController];
    //ここまで
    cocos2d::Application::getInstance()->run();
    return YES;
}

iPhoneだとこんな感じです。

広告表示例1

ipadだとこんな感じです。

広告表示例2

おまけ cocos2d-JS 3.0とXcode側の連携

cocos2d-JSとXcode側の連携については電子書籍を参考にしました。
内容を書くとあれなので、詳しい方法は書籍を参考にして下さい。
http://www.amazon.co.jp/Cocos2d-html5ではじめるモバイルゲーム開発-フニゲ-ebook/dp/B00HGNIK38

3.0版ではパラメーターがchar*ではなく、std::string&になっているので気をつけましょう。
文字列比較は

if(key.compare("command")==0){
・・
}

です。

Add a Comment

メールアドレスが公開されることはありません。