Cocos2d-x 游戏中嵌入广告(mogo横幅)

转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/35986939

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添加用户权限:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="android.permission.INTERNET"/>  
  2.     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />  
  3.     <uses-permission android:name="android.permission.INTERNET" />  
  4.     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
  5.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  6.     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  7.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  8.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  9.     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />  
  10.     <uses-permission android:name="android.permission.CALL_PHONE" />  
  11.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  12.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  13.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  14.     <uses-permission android:name="android.permission.VIBRATE" />  
  15.     <uses-permission android:name="android.permission.RECORD_AUDIO" />  
  16.     <uses-permission android:name="android.permission.GET_TASKS" />  
  17.     <uses-permission android:name="android.permission.CAMERA" />  
  18.     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
  19.     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>  


5、声明广告平台Activity, 代码到AndroidMainfest.xml文件中的application标签中

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <pre class="cpp" name="code">        <activity  
  2.         android:name="com.adsmogo.adview.AdsMogoWebView"  
  3.         android:configChanges="orientation|keyboardHidden|screenSize"  
  4.         android:label="@string/app_name" >  
  5.         </activity>  
  6.         <!-- 注册Service,自主广告与交换广告的应用下载功能所需 -->  
  7.         <service android:name="com.adsmogo.controller.service.UpdateService"  
  8.         android:exported="true"  
  9.         android:process=":remote" />  
  10.         <!-- 注册Service,安装应用所用 -->  
  11.         <service android:name="com.adsmogo.controller.service.CountService"  
  12.         android:exported="true"  
  13.         android:process=":remote" />  


6、在主Activity类中,添加横幅广告

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class Test extends Cocos2dxActivity{  
  2.     private static Handler handler;  
  3.     private static RelativeLayout bannerLayout;  
  4.     private AdsMogoLayout adView;  
  5.       
  6.     protected void onCreate(Bundle savedInstanceState){  
  7.         super.onCreate(savedInstanceState);   
  8.         bannerLayout = new RelativeLayout(this);  
  9.         RelativeLayout.LayoutParams parentLayputParams = new RelativeLayout.LayoutParams(  
  10.                 RelativeLayout.LayoutParams.FILL_PARENT,  
  11.                 RelativeLayout.LayoutParams.FILL_PARENT);  
  12.         this.addContentView(bannerLayout, parentLayputParams);  
  13.         /** 
  14.          * 初始化全插屏对象 
  15.          * 初始化之前必须设置默认的AppKey和Activity 
  16.          */  
  17.         AdsMogoInterstitialManager.setDefaultInitAppKey("93535c6092f543e8a257ee435a69da06");  
  18.         AdsMogoInterstitialManager.setInitActivity(Test.this);  
  19.         AdsMogoInterstitialManager.shareInstance()  
  20.                 .initDefaultInterstitial();  
  21.         AdsMogoInterstitialManager.shareInstance()  
  22.                 .defaultInterstitial()  
  23.                 .setAdsMogoInterstitialListener(new AdsMogoInterstitialListener() {  
  24.                       
  25.                     @Override  
  26.                     public void onShowInterstitialScreen(String arg0) {  
  27.                         // TODO Auto-generated method stub  
  28.                         Log.v("MogoCocos2dx Demo""onShowInterstitialScreen");  
  29.                     }  
  30.                       
  31.                     @Override  
  32.                     public boolean onInterstitialStaleDated(String arg0) {  
  33.                         // TODO Auto-generated method stub  
  34.                         Log.v("MogoCocos2dx Demo""onInterstitialStaleDated");  
  35.                         return false;  
  36.                     }  
  37.                       
  38.                     @Override  
  39.                     public void onInterstitialRealClickAd(String arg0) {  
  40.                         // TODO Auto-generated method stub  
  41.                         Log.v("MogoCocos2dx Demo""onInterstitialRealClickAd");  
  42.                     }  
  43.                       
  44.                     @Override  
  45.                     public View onInterstitialGetView() {  
  46.                         // TODO Auto-generated method stub  
  47.                         Log.v("MogoCocos2dx Demo""onInterstitialGetView");  
  48.                         return bannerLayout;  
  49.                     }  
  50.                       
  51.                     @Override  
  52.                     public void onInterstitialCloseAd(boolean arg0) {  
  53.                         // TODO Auto-generated method stub  
  54.                         Log.v("MogoCocos2dx Demo""onInterstitialCloseAd");  
  55.                     }  
  56.                       
  57.                     @Override  
  58.                     public boolean onInterstitialClickCloseButton() {  
  59.                         // TODO Auto-generated method stub  
  60.                         Log.v("MogoCocos2dx Demo""onInterstitialClickCloseButton");  
  61.                         return false;  
  62.                     }  
  63.                       
  64.                     @Override  
  65.                     public void onInterstitialClickAd(String arg0) {  
  66.                         // TODO Auto-generated method stub  
  67.                         Log.v("MogoCocos2dx Demo""onInterstitialClickAd");  
  68.                     }  
  69.                       
  70.                     @Override  
  71.                     public Class getCustomEvemtPlatformAdapterClass(  
  72.                             AdsMogoCustomEventPlatformEnum arg0) {  
  73.                         // TODO Auto-generated method stub  
  74.                         return null;  
  75.                     }  
  76.                 });  
  77.       
  78.     //  
  79.     handler = new Handler(){  
  80.   
  81.         @Override  
  82.         public void handleMessage(Message msg) {  
  83.             // TODO Auto-generated method stub  
  84.             switch (msg.what) {  
  85.             case 0:  
  86.                 // 展示Banner  
  87.                 if (bannerLayout.getChildCount() == 0) {  
  88.                     adView = new AdsMogoLayout(Test.this,  
  89.                             "46184ad32a0c417887cb433203b11403");  
  90.                     adView.setAdsMogoListener(new AdsMogoListener() {  
  91.   
  92.                         @Override  
  93.                         public void onRequestAd(String arg0) {  
  94.                             // TODO Auto-generated method stub  
  95.                             Log.v("MogoCocos2dx Demo""onRequestAd");  
  96.                         }  
  97.   
  98.                         @Override  
  99.                         public void onReceiveAd(ViewGroup arg0, String arg1) {  
  100.                             // TODO Auto-generated method stub  
  101.                             Log.v("MogoCocos2dx Demo""onReceiveAd");  
  102.                         }  
  103.   
  104.                         @Override  
  105.                         public void onRealClickAd() {  
  106.                             // TODO Auto-generated method stub  
  107.                             Log.v("MogoCocos2dx Demo""onRealClickAd");  
  108.                         }  
  109.   
  110.                         @Override  
  111.                         public void onFailedReceiveAd() {  
  112.                             // TODO Auto-generated method stub  
  113.                             Log.v("MogoCocos2dx Demo""onFailedReceiveAd");  
  114.                         }  
  115.   
  116.                         @Override  
  117.                         public void onCloseMogoDialog() {  
  118.                             // TODO Auto-generated method stub  
  119.                             Log.v("MogoCocos2dx Demo""onCloseMogoDialog");  
  120.                         }  
  121.   
  122.                         @Override  
  123.                         public boolean onCloseAd() {  
  124.                             // TODO Auto-generated method stub  
  125.                             return false;  
  126.                         }  
  127.   
  128.                         @Override  
  129.                         public void onClickAd(String arg0) {  
  130.                             // TODO Auto-generated method stub  
  131.                             Log.v("MogoCocos2dx Demo""onClickAd");  
  132.                         }  
  133.   
  134.                         @Override  
  135.                         public Class getCustomEvemtPlatformAdapterClass(  
  136.                                 AdsMogoCustomEventPlatformEnum arg0) {  
  137.                             // TODO Auto-generated method stub  
  138.                             return null;  
  139.                         }  
  140.                     });  
  141.                     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(  
  142.                             RelativeLayout.LayoutParams.FILL_PARENT,  
  143.                             RelativeLayout.LayoutParams.WRAP_CONTENT);  
  144.                     layoutParams.addRule(  
  145.                             RelativeLayout.ALIGN_PARENT_BOTTOM,  
  146.                             RelativeLayout.TRUE);  
  147.                     bannerLayout.addView(adView, layoutParams);  
  148.                 }  
  149.                 break;  
  150.             case 1:  
  151.                 onClickHideShow();  
  152.                 break;  
  153.             case 3:  
  154.                 /** 
  155.                  *进入展示时机 
  156.                  *当应用需要展示全屏广告调用interstitialShow(boolean isWait); 
  157.                  *通知SDK进入展示时机,SDK会竭尽全力展示出广告,当然由于网络等问题不能立即展示 
  158.                  *广告的,您可以通过参数isWait来控制授权SDK在获得到广告后立即展示广告。 
  159.                  */  
  160.                 AdsMogoInterstitialManager.shareInstance()  
  161.                 .defaultInterstitial().interstitialShow(true);  
  162.                 break;  
  163.             case 4:  
  164.                 Test.this.finish();  
  165.                 break;  
  166.             case 5:  
  167.                 /** 
  168.                  *退出展示时机 
  169.                  *如果您之前进入了展示时机,并且isWait参数设置为YES,那么在需要取消等待广告展示的 
  170.                  *时候调用方法interstitialCancel();来通知SDK 
  171.                  */  
  172.                 AdsMogoInterstitialManager.shareInstance()  
  173.                 .defaultInterstitial().interstitialCancel();  
  174.                 break;  
  175.             }  
  176.         }  
  177.     };  
  178.    }  
  179.   
  180.     public Cocos2dxGLSurfaceView onCreateView() {  
  181.         Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);  
  182.         // Test should create stencil buffer  
  183.         glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);  
  184.           
  185.         return glSurfaceView;  
  186.     }  
  187.       
  188.     //显示横屏广告  
  189.     public static void showBannerStatic() {  
  190.         Message msg = handler.obtainMessage();  
  191.         msg.what = 0;  
  192.         handler.sendMessage(msg);  
  193.     }  
  194.     //关闭横屏广告  
  195.     public static void hideBannerStatic() {  
  196.         Message msg = handler.obtainMessage();  
  197.         msg.what = 1;  
  198.         handler.sendMessage(msg);  
  199.     }  
  200.       
  201.     public static void showInterstitialStatic() {  
  202.         Message msg = handler.obtainMessage();  
  203.         msg.what = 3;  
  204.         handler.sendMessage(msg);  
  205.     }  
  206.     public static void close() {  
  207.         Message msg = handler.obtainMessage();  
  208.         msg.what = 4;  
  209.         handler.sendMessage(msg);  
  210.     }  
  211.       
  212.     public static void closeInterstitial() {  
  213.         Message msg = handler.obtainMessage();  
  214.         msg.what = 5;  
  215.         handler.sendMessage(msg);  
  216.     }  
  217.   
  218.       
  219.     static {  
  220.         System.loadLibrary("cocos2dcpp");  
  221.     }  
  222.     public void onClickHideShow() {  
  223.         if (adView != null) {  
  224.             adView.setVisibility(adView.getVisibility() == View.VISIBLE ? View.GONE  
  225.                             : View.VISIBLE);  
  226.         }  
  227.     }  
  228. }  



7、CCP程序中jni调用java函数,显示广告

定义方法:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include "MOGOAd.h"  
  2. MOGOAd::MOGOAd(){}  
  3. MOGOAd::~MOGOAd(){}  
  4. void MOGOAd::showBanner()  
  5.  {  
  6.     #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)   
  7.      JniMethodInfo showBanner;  
  8.     bool isHave = JniHelper::getStaticMethodInfo(showBanner,"com/cocos2dx/org/Test","showBannerStatic","()V");  
  9.        if (!isHave) {  
  10.      CCLog("jni:showBannerStatic false");  
  11.     }else{  
  12.       
  13.     showBanner.env->CallStaticVoidMethod(showBanner.classID, showBanner.methodID);  
  14.     }  
  15.       #endif  
  16. }  
  17.  void MOGOAd::hideBanner()  
  18. {  
  19.     #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)   
  20.      JniMethodInfo hideBanner;  
  21.     bool isHave = JniHelper::getStaticMethodInfo(hideBanner,"com/cocos2dx/org/Test","hideBannerStatic","()V");  
  22.      if (!isHave) {  
  23.      CCLog("jni:hideBannerStatic false");  
  24.     }else{  
  25.     CCLog("jni:hideBannerStatic true");  
  26.       
  27.     hideBanner.env->CallStaticVoidMethod(hideBanner.classID, hideBanner.methodID);  
  28.      }  
  29.       #endif  
  30. }  
  31.   
  32. void MOGOAd::showInterstitial()  
  33. {  
  34.     #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)   
  35.      JniMethodInfo showInterstitial;  
  36.     bool isHave = JniHelper::getStaticMethodInfo(showInterstitial,"com/cocos2dx/org/Test","showInterstitialStatic","()V");  
  37.      if (!isHave) {  
  38.      CCLog("jni:hideBannerStatic false");  
  39.     }else{  
  40.     CCLog("jni:hideBannerStatic true");  
  41.       
  42.     showInterstitial.env->CallStaticVoidMethod(showInterstitial.classID, showInterstitial.methodID);  
  43.      }  
  44.       #endif  
  45. }  
  46.     void MOGOAd::close()  
  47. {  
  48.     #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)   
  49.      JniMethodInfo showInterstitial;  
  50.     bool isHave = JniHelper::getStaticMethodInfo(showInterstitial,"org/cocos2dx/cpp/AdsMogoCoCos2dx","close","()V");  
  51.      if (!isHave) {  
  52.      CCLog("jni:hideBannerStatic false");  
  53.     }else{  
  54.     CCLog("jni:hideBannerStatic true");  
  55.       
  56.     showInterstitial.env->CallStaticVoidMethod(showInterstitial.classID, showInterstitial.methodID);  
  57.      }  
  58.       #endif  
  59. }  
  60.       void MOGOAd::closeInterstitial()  
  61. {  
  62.     #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)   
  63.      JniMethodInfo closeInterstitial;  
  64.     bool isHave = JniHelper::getStaticMethodInfo(closeInterstitial,"org/cocos2dx/cpp/AdsMogoCoCos2dx","closeInterstitial","()V");  
  65.      if (!isHave) {  
  66.      CCLog("jni:hideBannerStatic false");  
  67.     }else{  
  68.     CCLog("jni:hideBannerStatic true");  
  69.       
  70.     closeInterstitial.env->CallStaticVoidMethod(closeInterstitial.classID, closeInterstitial.methodID);  
  71.      }  
  72.       #endif  
  73. }  
  74.        

8、创建菜单按钮,点击显示广告
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. CCSize winSize = CCDirector::sharedDirector()->getWinSize();  
  2. CCMenuItemLabel  * bannerLable=CCMenuItemLabel::create(CCLabelTTF::create("show banner""Helvetica", 30),this, menu_selector(HelloWorld::menuBannerCallback));  
  3. bannerLable->setPosition(ccp(winSize.width -200, winSize.height -80));  
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. void HelloWorld::menuCloseCallback(CCObject *pSender)  
  2. {  
  3.     MOGOAd::close();  
  4. }  
  5. void HelloWorld::menuBannerCallback(CCObject *pSender){  
  6.     MOGOAd::showBanner();  
  7. }  
  8. void HelloWorld::menuRequestInterstitialCallback(CCObject *pSender){  
  9.     MOGOAd::hideBanner();  
  10. }  
  11. void HelloWorld::menushowInterstitialCallback(CCObject *pSender){  
  12.     MOGOAd::showInterstitial();  
  13. }  
  14. void HelloWorld::menucloseInterstitalCallback(CCObject *pSender){  
  15.     MOGOAd::closeInterstitial();  
  16. }  

9、效果图




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值