转载请注明出处:http://www.52php.cn/article/p-omllqquw-dy.html
DEMO下载地址:http://download.csdn.net/detail/oyangyufu/7578451
在经过国内的几个广告平台尝试,最终选择芒果广告,有几个优点:SDK更新较快,支持cocos2d-x3.0,平台还聚合了国内主流广告平台,下载相应的SDK也可加载到工程中。
芒果横幅广告测试
1、将cocos2d-x项目导入到eclipse上
2、下载android SDK cocos2d-x 版本,网址:http://my.adsmogo.com/Apps/Download,下载完名称为:AdsMogo_Android_Cocos2d-x_Demo.zip
3、解压后将jar包放入libs目录下,单击右键->Build Path->Add to Build Path
4、在AndroidManifest.xml添加用户权限:
- <uses-permissionandroid:name="android.permission.INTERNET"/>
- <uses-permissionandroid:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
- <uses-permissionandroid:name="android.permission.INTERNET"/>
- <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
- <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
- <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permissionandroid:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
- <uses-permissionandroid:name="android.permission.CALL_PHONE"/>
- <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
- <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
- <uses-permissionandroid:name="android.permission.VIBRATE"/>
- <uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>
- <uses-permissionandroid:name="android.permission.GET_TASKS"/>
- <uses-permissionandroid:name="android.permission.CAMERA"/>
- <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
- <uses-permissionandroid:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
5、声明广告平台Activity, 代码到AndroidMainfest.xml文件中的application标签中
<preclass="cpp"name="code"><activity
- android:name="com.adsmogo.adview.AdsMogoWebView"
- android:configChanges="orientation|keyboardHidden|screenSize"
- android:label="@string/app_name">
- </activity>
- <!--注册Service,自主广告与交换广告的应用下载功能所需-->
- <serviceandroid:name="com.adsmogo.controller.service.UpdateService"
- android:exported="true"
- android:process=":remote"/>
- <!--注册Service,安装应用所用-->
- <serviceandroid:name="com.adsmogo.controller.service.CountService"
- android:process=":remote"/>
6、在主Activity类中,添加横幅广告
publicclassTestextendsCocos2dxActivity{
- privatestaticHandlerhandler;
- staticRelativeLayoutbannerLayout;
- privateAdsMogoLayoutadView;
-
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- bannerLayout=newRelativeLayout(this);
- RelativeLayout.LayoutParamsparentLayputParams=newRelativeLayout.LayoutParams(
- RelativeLayout.LayoutParams.FILL_PARENT,
- RelativeLayout.LayoutParams.FILL_PARENT);
- this.addContentView(bannerLayout,parentLayputParams);
-
-
- *初始化之前必须设置默认的AppKey和Activity
- */
- AdsMogoInterstitialManager.setDefaultInitAppKey("93535c6092f543e8a257ee435a69da06");
- AdsMogoInterstitialManager.setInitActivity(Test. AdsMogoInterstitialManager.shareInstance()
- .initDefaultInterstitial();
- .defaultInterstitial()
- .setAdsMogoInterstitialListener(newAdsMogoInterstitialListener(){
-
- @Override
- voidonShowInterstitialScreen(Stringarg0){
- //TODOAuto-generatedmethodstub
- Log.v("MogoCocos2dxDemo","onShowInterstitialScreen");
- }
- publicbooleanonInterstitialStaleDated(Stringarg0){
- "onInterstitialStaleDated");
- returnfalse;
- }
- @Override
- voidonInterstitialRealClickAd(Stringarg0){
- //TODOAuto-generatedmethodstub
- Log.v("MogoCocos2dxDemo","onInterstitialRealClickAd");
- publicViewonInterstitialGetView(){
- "onInterstitialGetView");
- returnbannerLayout;
- voidonInterstitialCloseAd(booleanarg0){
- "onInterstitialCloseAd");
- publicbooleanonInterstitialClickCloseButton(){
- "onInterstitialClickCloseButton");
- voidonInterstitialClickAd(Stringarg0){
- "onInterstitialClickAd");
- publicClassgetCustomEvemtPlatformAdapterClass(
- AdsMogoCustomEventPlatformEnumarg0){
- returnnull;
- });
- //
- handler=newHandler(){
- voidhandleMessage(Messagemsg){
- switch(msg.what){
- case0:
- //展示Banner
- if(bannerLayout.getChildCount()==0){
- adView=newAdsMogoLayout(Test.this,
- "46184ad32a0c417887cb433203b11403");
- adView.setAdsMogoListener(newAdsMogoListener(){
- voidonRequestAd(Stringarg0){
- "onRequestAd");
- voidonReceiveAd(ViewGrouparg0,Stringarg1){
- "onReceiveAd");
- voidonRealClickAd(){
- "onRealClickAd");
- voidonFailedReceiveAd(){
- "onFailedReceiveAd");
- voidonCloseMogoDialog(){
- "onCloseMogoDialog");
- publicbooleanonCloseAd(){
- voidonClickAd(Stringarg0){
- "onClickAd");
- RelativeLayout.LayoutParamslayoutParams= RelativeLayout.LayoutParams.WRAP_CONTENT);
- layoutParams.addRule(
- RelativeLayout.ALIGN_PARENT_BOTTOM,
- RelativeLayout.TRUE);
- bannerLayout.addView(adView,layoutParams);
- break;
- case1:
- onClickHideShow();
- break;
- case3:
- /**
- *进入展示时机
- *当应用需要展示全屏广告调用interstitialShow(booleanisWait);
- *通知SDK进入展示时机,SDK会竭尽全力展示出广告,当然由于网络等问题不能立即展示
- *广告的,您可以通过参数isWait来控制授权SDK在获得到广告后立即展示广告。
- */
- AdsMogoInterstitialManager.shareInstance()
- .defaultInterstitial().interstitialShow(true);
- case4:
- Test.this.finish();
- case5:
- *退出展示时机
- *如果您之前进入了展示时机,并且isWait参数设置为YES,那么在需要取消等待广告展示的
- *时候调用方法interstitialCancel();来通知SDK
- .defaultInterstitial().interstitialCancel();
- };
- publicCocos2dxGLSurfaceViewonCreateView(){
- Cocos2dxGLSurfaceViewglSurfaceView=newCocos2dxGLSurfaceView(this);
- //Testshouldcreatestencilbuffer
- glSurfaceView.setEGLConfigChooser(5,6,5,16,8);
- returnglSurfaceView;
- //显示横屏广告
- staticvoidshowBannerStatic(){
- Messagemsg=handler.obtainMessage();
- msg.what=0;
- handler.sendMessage(msg);
- //关闭横屏广告
- voidhideBannerStatic(){
- msg.what=1;
- voidshowInterstitialStatic(){
- msg.what=3;
- voidclose(){
- Messagemsg=handler.obtainMessage();
- msg.what=4;
- handler.sendMessage(msg);
- voidcloseInterstitial(){
- msg.what=5;
- static{
- System.loadLibrary("cocos2dcpp");
- voidonClickHideShow(){
- if(adView!=null){
- adView.setVisibility(adView.getVisibility()==View.VISIBLE?View.GONE
- :View.VISIBLE);
- }
7、CCP程序中jni调用java函数,显示广告
定义方法:
#include"MOGOAd.h"
- MOGOAd::MOGOAd(){}
- MOGOAd::~MOGOAd(){}
- voidMOGOAd::showBanner()
- {
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
- JniMethodInfoshowBanner;
- boolisHave=JniHelper::getStaticMethodInfo(showBanner,"com/cocos2dx/org/Test","showBannerStatic","()V");
- if(!isHave){
- CCLog("jni:showBannerStaticfalse");
- }else{
- showBanner.env->CallStaticVoidMethod(showBanner.classID,showBanner.methodID);
- #endif
- voidMOGOAd::hideBanner()
- {
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
- JniMethodInfohideBanner;
- boolisHave=JniHelper::getStaticMethodInfo(hideBanner,"hideBannerStatic","()V");
- if(!isHave){
- CCLog("jni:hideBannerStaticfalse");
- }else{
- CCLog("jni:hideBannerStatictrue");
- hideBanner.env->CallStaticVoidMethod(hideBanner.classID,hideBanner.methodID);
- voidMOGOAd::showInterstitial()
- JniMethodInfoshowInterstitial;
- boolisHave=JniHelper::getStaticMethodInfo(showInterstitial,"showInterstitialStatic",248)"> CCLog("jni:hideBannerStaticfalse");
- CCLog("jni:hideBannerStatictrue");
- showInterstitial.env->CallStaticVoidMethod(showInterstitial.classID,showInterstitial.methodID);
- #endif
- voidMOGOAd::close()
- "org/cocos2dx/cpp/AdsMogoCoCos2dx","close",153); font-weight:bold; background-color:inherit">voidMOGOAd::closeInterstitial()
- JniMethodInfocloseInterstitial;
- boolisHave=JniHelper::getStaticMethodInfo(closeInterstitial,"closeInterstitial",248)"> closeInterstitial.env->CallStaticVoidMethod(closeInterstitial.classID,closeInterstitial.methodID);
-
8、创建菜单按钮,点击显示广告
CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
- CCMenuItemLabel*bannerLable=CCMenuItemLabel::create(CCLabelTTF::create("showbanner","Helvetica",30), bannerLable->setPosition(ccp(winSize.width-200,winSize.height-80));
voidHelloWorld::menuCloseCallback(CCObject*pSender)
- MOGOAd::close();
- voidHelloWorld::menuBannerCallback(CCObject*pSender){
- MOGOAd::showBanner();
- voidHelloWorld::menuRequestInterstitialCallback(CCObject*pSender){
- MOGOAd::hideBanner();
- voidHelloWorld::menushowInterstitialCallback(CCObject*pSender){
- MOGOAd::showInterstitial();
- voidHelloWorld::menucloseInterstitalCallback(CCObject*pSender){
- MOGOAd::closeInterstitial();
- }
9、效果图
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|