cocos2dx中加入多盟的广告条和插屏广告

在写这篇文章的时候,我只能说自己是个菜鸟,接了一天多才弄好,多盟的官方文档,真的坑死了,是java的,我用c++和cocos写的,刚开始按照他们的文档一步来,广告是显示出来了,不过显示出来后把我的应用界面给全屏覆盖了,问了他们的客服只给我说他们的sdk没有问题,........只能靠自己了,摸索了半天,算是弄好了,前提是你按照文档加入一些必要的配置,完事直接上代码。

 public static Handler handle; 
 private static RelativeLayout bannerLayout; 
 InterstitialAd mInterstitialAd;
 protected AdView mAdview; 

然后在oncreate中写入:

//广告条

  bannerLayout = new RelativeLayout(this);
  RelativeLayout.LayoutParams layout = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT);
  this.addContentView(bannerLayout, layout); 



  
  //插屏
  

mInterstitialAd = new InterstitialAd(AppActivity.this, AppActivity.PUBLISHER_ID,
    AppActivity.InterstitialPPID);
  mInterstitialAd.setInterstitialAdListener(new InterstitialAdListener() {
   @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 onInterstitialAdFailed(ErrorCode arg0) {
    Log.i("DomobSDKDemo", "onInterstitialAdFailed");    
   }

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

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

 

handle = new Handler() {
   public void handleMessage(Message msg) {
    switch(msg.what)
    {
    case 0:
    {
     //startActivity(new Intent(AppActivity.this, BannerAdActivity.class));
     mAdview = new AdView(AppActivity.this, AppActivity.PUBLISHER_ID, AppActivity.InlinePPID);
     mAdview.setKeyword("game");
     mAdview.setUserGender("male");
     mAdview.setUserBirthdayStr("2000-08-08");
     mAdview.setUserPostcode("123456");
     mAdview.setAdEventListener(new AdEventListener() {
      @Override
      public void onAdOverlayPresented(AdView adView) {
       Log.i("DomobSDKDemo", "overlayPresented");
      }
      @Override
      public void onAdOverlayDismissed(AdView adView) {
       Log.i("DomobSDKDemo", "Overrided be dismissed");
      }
      @Override
      public void onAdClicked(AdView arg0) {
       Log.i("DomobSDKDemo", "onDomobAdClicked");
      }
      @Override
      public void onLeaveApplication(AdView arg0) {
       Log.i("DomobSDKDemo", "onDomobLeaveApplication");
      }
      @Override
      public Context onAdRequiresCurrentContext() {
       return AppActivity.this;
      }
      @Override
      public void onAdFailed(AdView arg0, ErrorCode arg1) {
       Log.i("DomobSDKDemo", "onDomobAdFailed");
      }
      @Override
      public void onEventAdReturned(AdView arg0) {
       Log.i("DomobSDKDemo", "onDomobAdReturned");
      }
     });
                    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT);                     
                    layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);                   
                    bannerLayout.addView(mAdview, layoutParams); 
    }
    break;
    case 1:
    {

注掉的这是插屏的代码
//     if (mInterstitialAd.isInterstitialAdReady()){
//      mInterstitialAd.showInterstitialAd(AppActivity.this);
//     } else {
//      Log.i("DomobSDKDemo", "Interstitial Ad is not ready");
//      mInterstitialAd.loadInterstitialAd();
//     }
     onClickHideShow();  //关闭广告条
    }
     break;
    case 2:
     break;
    case 3:
     break;
    case 4:
     break;
    }
   }
  };
 }


 

 

//通过c++掉用下面的

public static void show() {
  Message message = handle.obtainMessage();
  message.what = 0;
  handle.sendMessage(message); 
 }
 public static void close(){
  Message message = handle.obtainMessage();
  message.what = 1;
  handle.sendMessage(message); 
 }
 
    public void onClickHideShow() {
     if (mAdview != null) {
      mAdview.setVisibility(mAdview.getVisibility() == View.VISIBLE ? View.GONE
        : View.VISIBLE);
      } 
     }



 

c++中的代码:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
void GameScene::show()
{
 CCLOG("start to showAD");
 JniMethodInfo t;
 bool isHave = JniHelper::getStaticMethodInfo(t,"cn/test/testing/AppActivity","show","()V");
 CCLOG("isHave:%d",isHave);
 if (isHave)
 {
  CCLOG("starting to showAD");
  t.env->CallStaticVoidMethod(t.classID,t.methodID);
  t.env->DeleteLocalRef(t.classID);
 }
 CCLOG("end showAD");
}


 

然后在你想要显示的地方掉用这个函数就ok了,写的不是很好,只是作为自己以后查询用,不喜勿喷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值