Cocos2d-xでのAdMobの統合

この記事では、AdMobバナーネットワークをCocos2d-xエンジンを使用して記述されたAndroidゲームに統合した経験を共有したいと思います。





はじめに


近年のモバイル開発への関心は高く、多くの独立した開発者や企業がこの市場の一部の開発に取り組んでいます。 これにより競争が激しくなり、優れたアプリケーションでさえ市場で迷子になります。 アプリケーションがランキングの上位に達するまでにかなりの時間がかかる場合があります。 そして時は金なりです。 ランキングの上位に位置することが重要です。これはさらなるダウンロードにつながるためです。 これにより、アプリケーションを無料で配置するのが良い戦略になります。 ただし、特にあなたが会社であるか、アウトソーシングを通じて作業の一部を使用している場合、アプリケーション開発は費用のかかる作業です。 しかし、1人の参加者が開発全体を完了したとしても、開発者が単にアプリケーションストアにマークを残すという計画にはほとんど含まれていませんでした。 少なくとも何らかの物質的な返品を得たい。 したがって、2つのアプリケーション収益化戦略に取り組みます。 Freemiumモデルは、無料のアプリケーションに加えて、アプリケーション内での購入を通じて追加機能を提供します。 または、アプリケーションに組み込まれた広告による収益化。 この記事では、アプリケーションへの広告の導入を検討します。





ツールの理論と準備


したがって、Cocos2d-x 2.0.4を使用して記述されたAndroid用のアプリケーションまたはゲームを既に持っているとしましょう。 いや? それでは、Cocos2d-x SDKに付属している例を基礎としてみましょう。 SDKはまだインストールされていませんか? 次に、フレームワークのソースコードが保存されているgithubセクションに移動します(執筆時点では、 cocos2d-x.orgプロジェクトの公式Webサイトは利用できませんでした)。 AdMob SDKはadmob.comにあります。



フレームワークを使用するプロジェクトのコードは、C ++で記述されています。 ただし、AdMob SDKはJavaライブラリです。 プロジェクトでこのライブラリを使用する方法は? 実際、すべてが一見すると思えるよりもずっと単純です。 そして、これはすべてAndroid SDKの機能のおかげです。 実際には、C ++で実装されたグラフィックスが表示されるViewオブジェクトもJavaオブジェクトであり、ここで必要なさまざまなViewの構成を自由に構築できます。



最初に思い浮かぶのは、ビューのスタックです。上部にバナー、下部にゲームウィンドウがあるとします。 これは、AdViewオブジェクトとCocos2dxGLSurfaceViewを配置するLinearLayoutオブジェクトを使用して実行できます。 これはすべて機能します。唯一の問題は、アプリケーション内での購入代金を支払った後など、バナーを削除する機能が必要なときに発生します。 問題は、Cocos2d-xのOpenGLビューがビューポートのサイズ変更をサポートしていないことです。

別の解決策は、RelativeLayoutを使用して、ゲームのOpenGLビューの上にバナーを表示することです。 この場合、ゲームの表示領域は画面上のすべての使用可能なスペースを占有し、変更されません。また、バナーのある領域は上部に重ねられます。 恐れを別として、これは画像の歪みやちらつきを引き起こしません。



Androidの開発に精通している場合は、通常、表示領域のパラメーターが特別なXMLファイルに記述されていることがわかります。 Cocos2d-x 1.0のプログラムではそうでした。 ただし、Cocos2d-xの最新バージョンでは、このファイルは見つかりません。 私にはわからない理由で、表示領域の説明がJavaコードに転送されました。 これにより問題は発生しません。これらのファイルの場所を知る必要があります(cocos2dx-2.0.4 / cocos2dx / platform / android / java / src / org / cocos2dx / lib)。 コードはわずかに大きくなりますが、必要な表示構成を動的に作成できます。 残念ながら、ライブラリファイルを変更しないと、必要なビューポートに接続できません。必要なクラスのメンバーはprivateとして宣言されます。 私のプロジェクトでは、フレームワークファイルを参照する代わりに、このコードをプロジェクトに完全にコピーするという根本的な決定を下しました。 今ではすべてのコードがプロジェクトのリポジトリにあるため、これにより手が解放され、必要なすべてのコード変更をCocos2dxActivityクラスで直接費やしました。



統合


それでは始めましょう。 最初に、テストプロジェクトのフォルダー(HelloCppなど)を同じフォルダーのHelloAdMobにコピーします。 次に、AdMob SDK HelloAdMob / proj.android / AdMobファイルをコピーします。 HelloAdMob / proj.android / cocos_javaフォルダーを作成し、cocos2dx-2.0.4 / cocos2dx / platform / android / java / srcからサブディレクトリを含むファイルをコピーします。

次に、Eclipse、または選択した別の環境(notepad?;-)でプロジェクトを開きます。 プロジェクトのプロパティは、次のスクリーンショットのようになります。



プロジェクトにcocos_javaフォルダーを追加する必要があります。





AdMobライブラリも同様です。





AdMobライブラリをエクスポート用にマークします。





AdMobには3.2以上のバージョンが必要なので、Android SDKのバージョンも変更する必要があります。 心配しないでください、Android 2.2からのバージョンのサポートは残ります。 適切なバージョンを設定して、project.propertiesファイルを変更します

# Project target. target=android-13
      
      





次に、AndroidManifest.xmlファイルをテキストとして開き、ターゲットSDKの行を修正します

 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="13" />
      
      





最小バージョンは古いままです。 AdMobがネットワークからバナーをダウンロードできるように、必要な権限を以下に追加します。

 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      
      





また、マニフェストファイルでAdMobを宣言する必要があります。 ゲームのアクティビティクラスを宣言した後、これを行いました。

 <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
      
      





Cocos2dxActivity.javaファイルを変更し、AdMobインポートシンクを追加します。

 import com.google.ads.AdRequest; import com.google.ads.AdSize; import com.google.ads.AdView;
      
      





広告ユニットのフィールドをクラスに追加します

 private AdView adView;
      
      





今、行の後

 // ...add to FrameLayout framelayout.addView(edittext);
      
      





次のコードを挿入します。

 //     adView = new AdView(this, AdSize.BANNER, "_id"); //   ,     ,     cocos2d-x      ViewGroup.LayoutParams ad_layout_params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 50); adView.setLayoutParams(ad_layout_params); //    AdRequest adRequest = new AdRequest(); //   adRequest.addTestDevice("id__"); //      adView.loadAd(adRequest);
      
      





admob.comに登録し、プログラムに関する情報を追加すると、パブリッシャーIDを取得します。 デバイスIDはlogcatコンソールに表示されます。デバイスIDをコピーしてコードに貼り付ける必要があります。自分のバナーを誤ってクリックしたため、admobシステムで禁止されることがあります(しゃれを許しません)。また、Googleアカウントを使用してログインすると、このアカウントもブロックされ、すべての結果が発生します。

次に、作成したビューポートをクラス階層に追加します。 OpenGLエリアを追加した後、これを行う必要があります。そうしないと、バナーがブロックされます。 行の後

 gLSurfaceView.setCocos2dxEditText(edittext);
      
      





コードを追加します。

 //  AdView    .     ,     framelayout.addView(adView);
      
      







すべて、組み立てを開始できます。 Android NDKを使用してネイティブライブラリをビルドすることを忘れないでください。その後、Eclipse(またはお気に入りの環境)でプロジェクトをビルドし、結果を楽しむことができます。










All Articles