cocos2dx + android 如何添加百度插屏广告

这几天,楼主和我的几个小伙伴完成了一个自己的Android游戏,使用cocos2d-x-.2.1.5 编写的,现在基本上都完工了,但是当进行到发布应用这一步时,本来打算在游戏中添加道具收费的,但是遇到了一些问题,所以只能在里面添加插屏广告了,我们这款游戏添加的是百度移动联盟的,好了,废话少说,现在开始正式的:

首先大家都知道是配置问题,这一块我就不多说了,大家可以到http://munion.baidu.com/about.html#/sdk/mobSdk这个网址去下载,里面有开发者文档,

现在我主要说的是在eclipse里如何添加代码,好了,下面正式开始:

一、当我们在创建Android工程时,大家都自动创建了自己的packageName:比如我的是:

这个包名当我们通过C++层调用Java层代码时是用的到的。

首先,我们需要在这个包下面创建一个class文件,命名为showAdHelper.java

这个文件的内容是:

public class ShowAdHelper {
	private static Handler mHandler;
	
	public static void init(Handler handler)
	{
		ShowAdHelper.mHandler = handler;
	}
	
	private static void showMyAd()
	{
		Message msg = mHandler.obtainMessage();
		msg.what = myGame.SHOW_AD;
		msg.sendToTarget();
	}
}
同时,我们会在这个包下面发现一个文件,这个文件是自动创建的,比如我的myGame.java,这个名称是和你在创建游戏时的命名有关的。在这个文件下面,要做如下修改:

首先,声明一个变量和一个常量:

public class myGame extends Cocos2dxActivity{
...
public static final int SHOW_AD = 0x0001;
InterstitialAd interAd;//插屏广告
...
}
然后还要在写一个初始化插屏广告函数:

public InterstitialAd getAd()
   {
	   final InterstitialAd interAd1 = new InterstitialAd(this);
	   interAd1.setListener(new InterstitialAdListener(){
				
				@Override
				public void onAdClick(InterstitialAd arg0) {
					Log.i("InterstitialAd","onAdClick");
				}

				@Override
				public void onAdDismissed() {
					Log.i("InterstitialAd","onAdDismissed");
					interAd = getAd();
				}

				@Override
				public void onAdFailed(String arg0) {
					Log.i("InterstitialAd","onAdFailed");
				}

				@Override
				public void onAdPresent() {
					Log.i("InterstitialAd","onAdPresent");
				}

				@Override
				public void onAdReady() {
					Log.i("InterstitialAd","onAdReady");
				}
				
			});
	   interAd1.loadAd();
	   return interAd1;
   }

同时,我们在onCreate函数中调用一次:

protected void onCreate(Bundle savedInstanceState){
...
interAd = getAd();
...
}
               创建一个Hendler
private Handler aHandler = new Handler()
   {
   	@Override
       public void handleMessage(Message msg) {
   		switch(msg.what)
   	    {
   		case SHOW_AD:
   			//if(isFirst)
   			//{
   				if(interAd.isAdReady()){
   					interAd.showAd(Cocos2dxActivity.this);
   					Log.d("LC","show");
   				}else{
   					interAd.loadAd();
   				}
   				Log.d("LC","not show");
   			break;
   	    }
   	}
   };

然后调用ShowAdHelper类中的init函数初始化。

protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		//mHandler  = new MainHandler();
		ShowAdHelper.init(mHandler);
}

到这里就已经差不多了,我们只需要在C++层中通过jni调用ShowAdHelper类中的showMyAd函数就行了。

当然也附上代码:

void PublicMethod::loadAndroidAd()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台 
    JniMethodInfo minfo;  
    jobject jobj;  
    bool b = JniHelper::getStaticMethodInfo(minfo,   
        "org/cocos2dx/lib/AdHelper",
        "showMyAd",
        "()V");
    jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);  
#endif 
}

到此就完成了,你可以在想要出广告的地方调用 loadAndroidAd函数就行了。

至此,小伙伴们就可以想在哪里展示广告就在哪里展示就行了。

以上就是楼主这几天的心血,当然,我也有一些地方没搞明白,比如,为什么我按照官方demo添加的广告,只在第一次调用时显示,以后调用后,它居然不显示了,但是居然还点的到这个广告,但是有些情况它会显示,比如,当我点击广告后,进入广告,然后退出在进入程序,它显示了,还有,当我按了menu键后在进入程序它也显示了,当然如果有哪位大神知道原因,麻烦告知。

最后,祝大家多多挣大钱。如有错误的地方,大家也可以指出来。



评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值