Last active
September 3, 2015 23:52
-
-
Save takashi1975/85dc48d36ded4b7a529f to your computer and use it in GitHub Desktop.
Cocos2d-x ver.3.2 Plugin を試してみた (Admob編)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cocos2d-x ver.3.2 Plugin | |
[例] Admob を入れてみる | |
http://qiita.com/blankblank/items/0daf178e5e070a723798 | |
http://brbranch.jp/blog/201407/cocos2d-x/adlantis_cocos2dx/ | |
~~~ 準備 ~~~ | |
1.プロジェクトの追加 | |
・[Your Project]/cocos2d/plugin/protocols/proj.ios/PluginProtocol.xcodeproj | |
2.プロジェクトの設定 | |
・[Your Project].xcodeproj ... Build Phases | |
・Link Binary With Libraries で以下を追加 | |
・libPluginProtocol.a | |
・[Your Project].xcodeproj ... Build Phases | |
・User Header Search Paths に以下を追加 | |
・$(SRCROOT)/../cocos2d/plugin/protocols/include | |
~~~ Admob ~~~ | |
1.プロジェクトの追加 | |
・[Your Project]/cocos2d/plugin/plugins/admob/proj.ios/PluginAdmob.xcodeproj | |
2.プロジェクトの設定 | |
・[Your Project].xcodeproj ... Build Phases | |
・Link Binary With Libraries で以下を追加 | |
・libPluginAdmob.a | |
・Link Binary With Libraries で以下を追加 | |
・SystemConfiguration.framework | |
・StoreKit.framework | |
・MessageUI.framework | |
・CoreTelephony.framework | |
・AdSupport.framework | |
・EventKit.framework | |
・EventKitUI.framework | |
・[Your Project].xcodeproj ... Build Settings | |
・Linking - Other Linker Flags で以下を追加 | |
-ObjC | |
-> 設定すると、コンパイルが通らなくなる | |
・[Your Project].xcodeproj ... Build Phases | |
・Link Binary With Libraries で以下を追加 | |
・MediaPlayer.framework | |
・GameController.framework | |
3.️実装(iOS) | |
#include "PluginManager.h" | |
#include "ProtocolAds.h" | |
using namespace plugin; | |
... | |
//Cocos2d-x PlugIn ... バナーの広告(表示確認) | |
{ | |
//Admob バナー広告 | |
auto admob = dynamic_cast<ProtocolAds *>(PluginManager::getInstance()->loadPlugin("AdsAdmob")); | |
if (admob) | |
{ | |
admob->setDebugMode(true); | |
{ | |
TAdsDeveloperInfo devInfo; | |
devInfo["AdmobID"] = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX"; | |
admob->configDeveloperInfo(devInfo); | |
} | |
{ | |
TAdsInfo info; | |
info["AdmobType"] = "1"; //... AdmobType::kTypeBanner | |
info["AdmobSizeEnum"] = "1"; //... AdmobSizeEnum::kSizeBanner | |
admob->showAds(info, ProtocolAds::AdsPos::kPosBottom); | |
} | |
} | |
} | |
//Cocos2d-x PlugIn ... インタースティシャル広告は未対応(とログに出る... orz) | |
{ | |
//Admob インターステイシャル広告 | |
auto admob = dynamic_cast<ProtocolAds *>(PluginManager::getInstance()->loadPlugin("AdsAdmob")); | |
if (admob) | |
{ | |
admob->setDebugMode(true); | |
{ | |
TAdsDeveloperInfo devInfo; | |
devInfo["AdmobID"] = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX"; | |
admob->configDeveloperInfo(devInfo); | |
} | |
{ | |
TAdsInfo info; | |
info["AdmobType"] = "2"; //... AdmobType::kTypeFullScreen | |
info["AdmobSizeEnum"] = "3"; //... AdmobSizeEnum::kSizeIABBanner | |
admob->showAds(info, ProtocolAds::AdsPos::kPosCenter); | |
} | |
} | |
} | |
4.実装準備 1(Android ... soファイル) | |
a) 1. [Your Project]/cocos2d/plugin/tools をターミナルで開き、以下のコマンドを実行 | |
./publish.sh admob(←使いたいプラグイン名) | |
-> 成功すると [Your Project]/cocos2d/plugin/publish フォルダ以下にファイルが生成される | |
2. 生成された jarファイル GoogleAdMobAdsSdk.jar ... は使用しない(申請してもリジェクトされるらしい) | |
(google-play-service_lib を使用) | |
b) [Your Project]/proj.android/jni/Android.mk を編集 | |
以下の行を適切な箇所へ追加 | |
LOCAL_WHOLE_STATIC_LIBRARIES += PluginProtocolStatic | |
$(call import-module,plugin/publish/protocols/android) | |
c) [Your Project]/proj.android/jni/Application.mk を編集(コンパイルが通らない) | |
//変更前 | |
APP_STL := c++_static | |
↓ | |
//変更後 | |
APP_STL := gnustl_static | |
d) [Your Project]/proj.android/jni/hellocpp/main.cpp を編集 | |
#include "PluginJniHelper.h" | |
... | |
PluginJniHelper::setJavaVM(JniHelper::getJavaVM()); | |
e) いつものように ./build_native.py を実行し、 soファイルが生成できれば成功 | |
5.実装準備 2_a(Android... libPluginProtocol, libPluginAdmob) | |
a) [Your Project]/cocos2d/plugin/protocols/proj.android をインポート(コピー) | |
b) [Your Project]/cocos2d/plugin/plugins/admob/proj.android をインポート(コピー) | |
... プロジェクトのプロパティで protocols のパスの指定を修正 | |
c) [Your Project]/cocos2d/plugin/plugins/admob/proj.android/src/org/cocos2dx/plugin/AdsAdmob.java を下記のサイトを見ながら編集 | |
(google-play-service に対応) | |
https://gist.github.com/midworld/30ea9f2c1c4f62b2cd61 | |
5.実装準備 2_b(Android...AdMob設定) | |
※詳しくは https://developers.google.com/mobile-ads-sdk/docs/ | |
a) プロジェクトのプロパティを開き、Library から「google-play-services_lib」を追加 | |
b) AndroidManifest.xml を編集 | |
1. meta-data タグを追加 | |
<meta-data android:name="com.google.android.gms.version" | |
android:value="@integer/google_play_services_version"/> | |
2. com.google.android.gms.ads.AdActivity を宣言 | |
<activity android:name="com.google.android.gms.ads.AdActivity" | |
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> | |
3. ネットワーク権限を設定する(次の権限をマニフェストで宣言) | |
<uses-permission android:name="android.permission.INTERNET"/> | |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> | |
6.実装(Android) | |
AppAcitivity.java の編集 (以下のメソッドを追加) | |
public Cocos2dxGLSurfaceView onCreateView() | |
{ | |
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); | |
//Cococs2d-x PlugIn | |
PluginWrapper.init(this); | |
PluginWrapper.setGLSurfaceView(glSurfaceView); | |
return glSurfaceView; | |
} |
Google admob SDK 6.12.0でEventKit、EventKitUIフレームワークが必須に ...
http://qiita.com/peka2/items/b8b9427c56dcdecfc3c8
Android ... cocos2d/plugin/tools/publish.sh の実行を忘れずに (ver.3.3 にしたとき忘れてました ^^;
http://do-low.sakura.ne.jp/blog/42
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
AdMob 以外の Ad で Cocos2d-x Plugin の形式に対応しているものはない...?
AdMob の SDK も古いので差し替えないといけないです...
... もっともっと勉強が必要なことを実感... orz