Cocos Creatorを使用したAndroidアプリの開発はcocos2d-x(js)が使用されます。
nendで提供されているcocos2d-x用のSDKはcocos2d-x(cpp)用となっているため、そのままでは使用できません。
そこで今回はcocos2d-x(js)でnend広告を導入する方法をご紹介します。
Cocos Creatorのセットアップについては以下の記事を参照してください。
https://fantastic-works.com/archives/1349
nendモジュールの組み込み
nendのcocos2d-xモジュール組み込み手順を参照し、Android StudioのプロジェクトにnendSDKを組み込みます。
ヘッダーファイルとc++ソースファイルの追加についてはやらなくて大丈夫です。使用しないので。
JavaScriptからnendの広告を表示する
バナー広告を例に実装方法を記載します。
cocos2d-x(cpp)でバナー広告を表示する場合は
char apiKey[] = "管理画面より発行された apiKey"; char spotID[] = "管理画面より発行された spotID"; NendModule::createNADViewTop(apiKey, spotID, true);
でしたが、cocos2d-x(js)の場合は
var apiKey = "管理画面より発行された apiKey"; var spotID = "管理画面より発行された spotID"; jsb.reflection.callStaticMethod("net/nend/NendModule/NendModule", "createAdViewBottom", "(Ljava/lang/String;Ljava/lang/String;Z)V", apiKey, spotID, true);
となります。
nendSDKへのアクセスはcocos2d-x(cpp)の時はnend提供のC++ファイルを使用しますが、cocos2d-x(js)では独自で行う必要があります。
nendモジュールの組み込みの際にヘッダーファイルとc++ソースファイルの追加は必要ないと言ったのはこういうことです。
解説
jsb.reflection.callStaticMethodというのはJavaScriptからネイティブ(Objective-CやJava)のメソッドを呼び出すための記述です。
jsb.reflection.callStaticMethodに指定する引数は以下の通りです。
第1引数 | クラス名 |
---|---|
第2引数 | メソッド名 |
第3引数 | シグネチャー |
第4引数以降 | 呼び出すメソッドに渡す引数 |
この辺りはcocos2d-xの公式ドキュメントに記載されています。
cocos2d-x(cpp)でバナー広告を表示する際に使用するNendModuleクラスのソースコードを見ると以下の記述が存在します。
void NendModule::createNADViewBottom(char* apiKey, char* spotID, bool isAdjust){ cocos2d::JniMethodInfo t; if (cocos2d::JniHelper::getStaticMethodInfo(t, CLASS_NAME, "createAdViewBottom", "(Ljava/lang/String;Ljava/lang/String;Z)V")) { jstring stringApiKey = t.env->NewStringUTF(apiKey); jstring stringSpotID = t.env->NewStringUTF(spotID); t.env->CallStaticVoidMethod(t.classID, t.methodID, stringApiKey, stringSpotID, isAdjust); t.env->DeleteLocalRef(stringApiKey); t.env->DeleteLocalRef(stringSpotID); t.env->DeleteLocalRef(t.classID); } }
このif文の中身がjsb.reflection.callStaticMethodに変わる感じですね。
最後に
アイコン広告やインタースティシャル広告についても同様の方法で表示できるはずです。
Cocos Creatorを使用して開発しようと考えている人で広告の導入を検討しているのでしたらnendを使用してみてはいかかでしょうか。
クリック単価は結構少ないですが、導入が簡単なので初心者にもそこそこ優しいと思います。