cocos2d-x在android下添加多盟插屏广告

        cocos2d-x在android下添加多盟插屏广告       

        分类:            cocos2d-x 479人阅读 评论(0) 收藏 举报

好吧,经过仔细研究,我发现其实在cocos2d-x的应用下添加的插屏广告,当用Jin调用代码时是在子线程中对UI进行操作,所以显然是不可能控制得了广告UI的,所以上一篇说的“无法添加”就当是屁话好了……反正我确实是只菜鸟……接下来把添加过程写出来,好让后继的菜鸟们能不费力的添加这类广告,甚至以自定义的方式来展示广告……

上面说过了用JIN调用插屏时是在子线程中操作UI,主线程UI不是安全线程,所以需要使用Handle来与主线程进行通信,让其在适时的时候按我们设定的方式去调用广告UI,下面是代码:

  1. public class GameActivity extends Cocos2dxActivity { 
  2.      private static InterstitialAd interstitialAd; 
  3.         public static final String PUBLISHER_ID = "56OJzCCIuNT9GZxMAZ"
  4.         public static final String InlinePPID = "16TLmbLoAp3B1NUGss77M4ai"
  5.         public static final String InterstitialPPID = "16TLmbLoAp3B1NUGs4bP4d9i"
  6.         static DomobInterstitialAd mInterstitialAd; 
  7.                 private static  Handler mHandler;  
  8.  
  9.                 protected void onCreate(Bundle savedInstanceState){ 
  10.         super.onCreate(savedInstanceState); 
  11.  
  12.  
  13.          
  14.            mHandler = new Handler();   
  15.                mInterstitialAd = new DomobInterstitialAd(this, PUBLISHER_ID, 
  16.                         InterstitialPPID, DomobInterstitialAd.INTERSITIAL_SIZE_300X250); 
  17.  
  18.                  
  19.                 mInterstitialAd.setInterstitialAdListener(new DomobInterstitialAdListener() { 
  20.                     @Override 
  21.                     public void onInterstitialAdReady() { 
  22.                         Log.i("DomobSDKDemo", "onAdReady"); 
  23.                     } 
  24.  
  25.                     @Override 
  26.                     public void onLandingPageOpen() { 
  27.                         Log.i("DomobSDKDemo", "onLandingPageOpen"); 
  28.                     } 
  29.  
  30.                     @Override 
  31.                     public void onLandingPageClose() { 
  32.                         Log.i("DomobSDKDemo", "onLandingPageClose"); 
  33.                     } 
  34.  
  35.                     @Override 
  36.                     public void onInterstitialAdPresent() { 
  37.                         Log.i("DomobSDKDemo", "onInterstitialAdPresent"); 
  38.                     } 
  39.  
  40.                     @Override 
  41.                     public void onInterstitialAdDismiss() { 
  42.                         // Request new ad when the previous interstitial ad was closed. 
  43.                         mInterstitialAd.loadInterstitialAd(); 
  44.                         Log.i("DomobSDKDemo", "onInterstitialAdDismiss"); 
  45.                     } 
  46.  
  47.  
  48.  
  49.                     @Override 
  50.                     public void onInterstitialAdLeaveApplication() { 
  51.                         Log.i("DomobSDKDemo", "onInterstitialAdLeaveApplication"); 
  52.                          
  53.                     } 
  54.  
  55.                     @Override 
  56.                     public void onInterstitialAdClicked(DomobInterstitialAd arg0) { 
  57.                         Log.i("DomobSDKDemo", "onInterstitialAdClicked"); 
  58.                     } 
  59.  
  60.                     @Override 
  61.                     public void onInterstitialAdFailed( 
  62.                             cn.domob.android.ads.DomobAdManager.ErrorCode arg0) { 
  63.                         // TODO Auto-generated method stub 
  64.                         Log.i("DomobSDKDemo", "onInterstitialAdFailed");     
  65.                     } 
  66.                 }); 
  67.                  
  68.                 mInterstitialAd.loadInterstitialAd(); 
  69.  
public class GameActivity extends Cocos2dxActivity {
	 private static InterstitialAd interstitialAd;
		public static final String PUBLISHER_ID = "56OJzCCIuNT9GZxMAZ";
		public static final String InlinePPID = "16TLmbLoAp3B1NUGss77M4ai";
		public static final String InterstitialPPID = "16TLmbLoAp3B1NUGs4bP4d9i";
		static DomobInterstitialAd mInterstitialAd;
                private static  Handler mHandler; 

                protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);


		
	       mHandler = new Handler();  
               mInterstitialAd = new DomobInterstitialAd(this, PUBLISHER_ID,
						InterstitialPPID, DomobInterstitialAd.INTERSITIAL_SIZE_300X250);

				
				mInterstitialAd.setInterstitialAdListener(new DomobInterstitialAdListener() {
					@Override
					public void onInterstitialAdReady() {
						Log.i("DomobSDKDemo", "onAdReady");
					}

					@Override
					public void onLandingPageOpen() {
						Log.i("DomobSDKDemo", "onLandingPageOpen");
					}

					@Override
					public void onLandingPageClose() {
						Log.i("DomobSDKDemo", "onLandingPageClose");
					}

					@Override
					public void onInterstitialAdPresent() {
						Log.i("DomobSDKDemo", "onInterstitialAdPresent");
					}

					@Override
					public void onInterstitialAdDismiss() {
						// Request new ad when the previous interstitial ad was closed.
						mInterstitialAd.loadInterstitialAd();
						Log.i("DomobSDKDemo", "onInterstitialAdDismiss");
					}



					@Override
					public void onInterstitialAdLeaveApplication() {
						Log.i("DomobSDKDemo", "onInterstitialAdLeaveApplication");
						
					}

					@Override
					public void onInterstitialAdClicked(DomobInterstitialAd arg0) {
						Log.i("DomobSDKDemo", "onInterstitialAdClicked");
					}

					@Override
					public void onInterstitialAdFailed(
							cn.domob.android.ads.DomobAdManager.ErrorCode arg0) {
						// TODO Auto-generated method stub
						Log.i("DomobSDKDemo", "onInterstitialAdFailed");	
					}
				});
				
				mInterstitialAd.loadInterstitialAd();

 }

上面都是官方示例中的代码,下面是线程代码,:

  1. private static Runnable showMyADi = new Runnable() {   
  2.     public void run() {   
  3.      
  4.         if (mInterstitialAd.isInterstitialAdReady()){ 
  5.             mInterstitialAd.showInterstitialAd(GameActivity.getContext()); 
  6.         } else { 
  7.             Log.i("DomobSDKDemo", "Interstitial Ad is not ready"); 
  8.             mInterstitialAd.loadInterstitialAd(); 
  9.         }    
  10.     }   
  11. }; 
    private static Runnable showMyADi = new Runnable() {  
        public void run() {  
        
    		if (mInterstitialAd.isInterstitialAdReady()){
    			mInterstitialAd.showInterstitialAd(GameActivity.getContext());
    		} else {
    			Log.i("DomobSDKDemo", "Interstitial Ad is not ready");
    			mInterstitialAd.loadInterstitialAd();
    		}	
        }  
    };
上面通过判断插屏广告是否加载成功进行显示或者重新请求。

最后是通过JIN来执行上面的代码:

  1. public static void showMyAD(){ 
  2.  
  3.     mHandler.post(showMyADi);  
  4.  
	public static void showMyAD(){

		mHandler.post(showMyADi); 
	
	}

调用后广告显示正常,点击正常……调试代码一片绿、蓝色……我想如果加聚合也这样调用的话应该差不多了……
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值