概要
cocos2d-xなら一つのプログラムでandroidとiphoneの両方のアプリが作れる。けれどもアプリにnend広告を載せようとすると手順が一筋縄ではいかなくなる。
意外にもその手順が面倒だったのでメモしておく。というかnendから配布されてるマニュアル通りだとうまくいかないのでメモしておく。
環境
windows 8.1
eclipse 4.2
cocos2d-x 2.2.3
android 4.0
手順
1.nendからSDKとJARをダウンロードする
nendにログインして[広告枠の管理]からSDKをダウンロードする。
次にnendメディアパートナー向け資料一覧から[cocos2d-xモジュール2.2用]をダウンロードする。それぞれを展開しておく。
2.eclipseにjarファイルを追加する
NendSDK_Android-2.4.1\Nend\SDK\内にあるnendSDK-2.4.1.jarファイルをexlipseのlibsフォルダにドラッグ&ドロップする。
次にeclipseの左メニューからプロジェクトの上で右クリックし、プロパティを開く。[java build path]をクリックし、[add jars]ボタンをクリックして[nendSDK-2.4.1.jar]を追加する。
隣りのタブに移動して[nendSDK-2.4.1.jar]にチェックを入れる。この作業をしておかないとjarが有効にならないので注意!
3.eclipseにGoogle Play Servicesを追加する
Android SDK Managerを開き、Google Play Servicesをインストールする。すでにインストールされている場合でも最新版がいいのでアップデートしておく。
eclipseの左メニューの上で右クリックし、プロジェクトの追加からGoogle Play Servicesを追加する。Google Play Servicesは以下のパスにある。
AndroidSDKフォルダ/sdk/extras/google/google_play_services/libproject
開発中のプロジェクトにて、google-play-services_libプロジェクトへのを参照を追加する。
具体的にはeclipseの左メニューからプロジェクトの上で右クリックし、プロパティを開く。[android]をクリックし、右画面下の[add]ボタンをクリックして[google-play-services_lib]を追加する。
4.マニフェストの設定を変更する
プロジェクトの[AndroidManifest.xml]ファイルを開いて
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
続いて、
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
ここまでで1度、クリーン&ビルドしておこう。エラーが出るようならやり直し。
5.nendモジュールファイルを追加する
eclipseの[Classes]フォルダ内にNendModule.h、NendIconModule.h、NendModule.cpp、NendIconModule.cppファイルを追加する。
続いてプロジェクトに[source folder]を追加する。フォルダ名は[gen_nend]とした。genフォルダにコピーしてしまうと、apkを作ろうとビルドするとフォルダごと消えてしまうから注意!
gen_nendフォルダを作ったら、[nendSDK_cocos2dX_Module]フォルダ内にある[net]フォルダごとドラッグ&ドロップする。
6.nend広告を表示する
プロジェクトの[jni]フォルダ内にある[Android.mk]のLOCAL_SRC_FILESに以下の行を追加する。
../../Classes/NendIconModule.cpp \ ../../Classes/NendModule.cpp
広告を表示したいsceneに[NendModule.h]をincludeする。
#include "HelloWorldScene.h" #include "NendModule.h" USING_NS_CC; CCScene* HelloWorld::scene() { ...
広告を表示するプログラムを追加する。apiKeyとspotIDは適宜変更しておくこと。
// on "init" you need to initialize your instance bool HelloWorld::init() { ... // add the sprite as a child to this layer this->addChild(pSprite, 0); char apiKey[] = "8932b68d22d1d32f5d7251f9897a6aa64117995e"; char spotID[] = "71000"; NendModule::createNADViewTop(apiKey, spotID); return true; }
以上で、クリーン&ビルドするとnend広告が表示されるはず。
広告の表示位置も変えることができるので、その辺に興味があればnendが配布しているマニュアルを見てください。ではー