您的位置:首页 > 移动开发 > Cocos引擎

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

2013-08-13 19:26 330 查看

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

        分类:           
cocos2d-x2013-08-13 19:26479人阅读评论(0)收藏举报
多线程UICocos2d-x广告

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

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

[html]
view plaincopyprint?

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(); 
 


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();

}


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

[html]
view plaincopyprint?

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(); 
        }    
    }   
}; 

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来执行上面的代码:

[html]
view plaincopyprint?

public static void showMyAD(){ 
 
    mHandler.post(showMyADi);  
 


public static void showMyAD(){

mHandler.post(showMyADi);

}


调用后广告显示正常,点击正常……调试代码一片绿、蓝色……我想如果加聚合也这样调用的话应该差不多了……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: