Skip to content

Instantly share code, notes, and snippets.

@takashi1975
Last active September 3, 2015 23:52
Show Gist options
  • Save takashi1975/85dc48d36ded4b7a529f to your computer and use it in GitHub Desktop.
Save takashi1975/85dc48d36ded4b7a529f to your computer and use it in GitHub Desktop.
Cocos2d-x ver.3.2 Plugin を試してみた (Admob編)
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;
}
@takashi1975
Copy link
Author

Google admob SDK 6.12.0でEventKit、EventKitUIフレームワークが必須に ...
http://qiita.com/peka2/items/b8b9427c56dcdecfc3c8

@takashi1975
Copy link
Author

Android ... cocos2d/plugin/tools/publish.sh の実行を忘れずに (ver.3.3 にしたとき忘れてました ^^;
http://do-low.sakura.ne.jp/blog/42

@takashi1975
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment