ここ3日ほど、Twiiterや個人開発者さんの間で、よく名前がでて収益が良いといい噂を聞く「アスタ」と「GameFeat」のアドネットワークを実装しようと時間を使ってきました。 結果、GameFeatは何とか表示することができたのですが、アスタの方はAndorid側が表示できませんでした。
【追記】 遅ればせながら、無事Andorid側でも表示ができました。 ご心配をおかけしました。
アスタ広告
アスタ広告は、アイコン型の広告で、一つのアイコンから設置できるので、小さい隙間にも配置ができます。 個人開発者さんが出しているアプリを見ると、ほとんどのアプリで導入されているので、とても収益性がだ高いものだと、前から気になっていました。
iOSに設置
iOS側に関しては、ほぼ書きサイトを参考にして設置をしました。 [参考にしたサイト] cocos2d-xでアイコン型広告(アスタ)を実装してみる iOS編 | ワンダープラネットエンジニア Blog がおまる開発ブログ cocos2d-xにアスタを導入してみる:iOS編
注意点としては、アイコンの位置が横型のアプリですとはみ出してしまい、広告が正しく設置できているか見分けが付かない場合があることです。 私は、最初これで、広告が無事設置できているかどうか時間をとられました。
こんな感じで表示できました。
Android側に設置
いつものことながらAndorid側がまったく上手くいきません(ヽ´ω`)ハァ…。
まずは、公式のアスタさんの方で公開されている方法で実装をしてみます。 Android設置方法 -アスタ-
とりあえずコピペをして、実行。最初にエラーが出る。 [c]
//Manifest内 //コロンがセミコロンになっていたので修正 <uses-permission android:name="android.permission.INTERNET" />
//MyProject.java内
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//これを入れないとエラーが出る
setContentView(R.layout.main);
[/c]
これを解決すると、アスタのアイコンが表示される。 でも、admobでも見かけた、広告だけが表示されて、cocos2dxのゲーム画面が表示されない。
それなら別の方法と考えGoogleで調べてみると、おなじみ「がおまるさん」がドンピシャな記事を書いて頂いているのでこれをやってみることに。 [参考にしたサイト] がおまる開発ブログ cocos2d-xにアスタを導入してみる:Android編
これも見よう見まねでやってみるのですが、エラーを消すことできないのでビルドできず。 この方法は、日をあらためて行ったのですが、できていない状況です。
アスタさんに問い合わせても、がおまるさんブログを参考にしてくださいとメールが来るだけでした。
原因を考える
まずは、「Cocos2dxActivity.java」への記述。 ブログでは、「Cocos2dxActivity.java」に直接記載をされているような感じなのですが、私のcocos2dxのプロジェクトには、Cocos2dxActivityクラスを親クラスに持つ「Project名.java」しかありません。 ここにinit()を上書きするのかと考えていたのですが、this.mGLSurfaceViewのmGLSurfaceViewがどこから持ってきていいのかわかりません。 逆に「libcocos2dx」プロジェクトにある「Cocos2dxActivity.java」に直接書き込もうとすると、今度は「iconAd.java」をどうやって読み込んだらいいのかわかりませんでした。
[c] // Cocos2dxActivity
// アイコン型広告処理
RelativeLayout adMain = new RelativeLayout(this);
this.initIconAd();
// 広告用RelativeLayoutに追加←RelativeLayoutがキーポイント!
adMain.addView(iconAdView);
// フレームレイアウトに追加
framelayout.addView(adMain);
// Set framelayout as the content view
setContentView(framelayout);
[/c]
dispIconAdView
これは、Cocos2dxActivityにこのようなメソッドはありませんみたいな感じでエラーがでます。 ネットで調べても、ヒットしません。 [c]
//Cocos2dxActivity.java
if (str[1].equals(&quot;0&quot;)) {
// アイコン型広告非表示
myActivity.dispIconAdView(false);
} else {
// アイコン型広告表示
myActivity.dispIconAdView(true);
}
[/c]
cocos2dxのviewとその他viewの関係
おそらくこれを私が理解していないのがいけないのですが、cocos2dxのviewとその他のviewの関係がよくわかっていないのが一番の原因ではないかと。 色々webを見ているのですが、いまいちよくわからない。
おそらく、cocos2dxのviewが広告やその他viewに重なって見えなくなっている感じだと思います。
最後に
ここ一週間、admobから始め、メディエーション、twitterとGamefeat,アスタとiOSとAndoridで実装できるか試していました。 やはり、Andorid側の処理が非常にわからない。 これは勉強も何もしていないので、仕方のないことなので、しょうがないですね。
アスタのAndroidの記述に関しては、もし、何か良い方法があれば、教えて欲しいです。
多分、そんなに難しくないと思うのですが、如何せん情報がないので、非常に悩んでいます。
追記
詳しくは、別のブログの記事に書こうと思いますが、無事、アスタ広告をAndorid側でも実装できました。 メールで丁寧に対応いただいた「アスタさん」と「がおまるさん」ありがとうございます!
【libcocos2dx】のプロジェクト内に、全ての記述を行いました。 後は、がおまるさんのブログの通りコードを打ち込めば表示できるはずです。
これまでの過程の中で色々と弄ってしまったので「 'Android Dependencies' が存在しないライブラリー」というエラーがプロジェクトを新しく変えても恒常的に出てくるようになってしまうなどの、アスタ実装以外でもエラーを潰すのに苦労しました。
後は、「アスタ広告の位置の調整」、「画面ごとに表示・非表示を切り替える仕組を作る」、「Andoroid側ではアイコンだけなのでアプリ名も表示する」、この3つを設定すればいいだけです。