用cocos2d-x 3.4 开发了个小游戏,然后成功的接入百度联盟的广告,很多初学者也希望在自己开发的游戏接入广告盈利,所以我就以百度联盟的横幅和插屏广告为例,根据自己接入的步骤做个总结,希望对有需要的开发者有所帮助。

一、百度SDK包导入与权限的配置

1、导入jar包

下载百度联盟android版的SDK包,我下载的文件名Baidu_Union_SDK_Android.zip,解压后文件夹里面有个jar包Baidu_MobAds_SDK.jar,将该jar包复制到你工程的libs目录下(如果没有新建一个libs文件夹),然后右键点击你的项目->Properties->Java Build Path->Libraries->Add JARs添加百度jar包,如下图所示:

wKiom1YBTTbhWC-3AAHXkG1q-Yo732.jpg

2、配置AndroidManifest.xml

◆添加权限

<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<!--以下为可选权限-->
<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permissionandroid:name="android.permission.RECORD_AUdio"/>
<uses-permissionandroid:name="android.permission.VIBRATE"/>
<uses-permissionandroid:name="android.permission.CAMERA"/>
<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permissionandroid:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>

◆添加APPSID和AppActivity申明

<Meta-dataandroid:name="BaiduMobAd_APP_ID"android:value="dcd69c04"/>
<Meta-dataandroid:name="BaiduMobAd_APP_SEC"android:value="dcd69c04"/>
<activityandroid:name="com.baidu.mobads.AppActivity"
android:configChanges="keyboard|keyboardHidden|orientation"/>

如下图所示:

wKioL1YBT1aBrdfRAAJ9S5RSVew859.jpg


二、横幅banner广告的接入

在AppActivity.java文件中加入如下代码

privateAdViewadView;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TodoAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setupAds();
}
privatevoidsetupAds(){
RelativeLayoutlayout=newRelativeLayout(this);
addContentView(layout,newLayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
adView=newAdView(this);
RelativeLayout.LayoutParamslayoutParams=newRelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BottOM);
layout.addView(adView,layoutParams);
}

如图所示:

wKiom1YBUt6xjJF7AAOaxjQDuDk796.jpg

加入代码后广告会在游戏的底端显示


三、加入插屏广告

1、在类AppActivity同一包名下新建ShowAdHelper类文件

wKioL1YBVLHygqp5AABKlRL_2Cs059.jpg

2、在类ShowAdHelper中加入如下代码

publicclassShowAdHelper{
privatestaticHandlermHandler;
publicstaticvoidinit(Handlerhandler)
{
ShowAdHelper.mHandler=handler;
}
privatestaticvoidshowMyAd()
{
Messagemsg=mHandler.obtainMessage();
msg.what=AppActivity.SHOW_AD;
msg.sendToTarget();
}
}

3、在类ShowAdHelper中定义一个变量和一个常量

publicstaticfinalintSHOW_AD=0x0001;
InterstitialAdinterad;

3、在类AppActivity中新建getInsertAd()方法初始化插屏广告

publicInterstitialAdgetInsertAd(){
finalInterstitialAdinterad1=newInterstitialAd(this);
interad1.setListener(newInterstitialAdListener(){
@Override
publicvoidonAdClick(InterstitialAdarg0){
Log.i("InterstitialAd","onAdClick");
}
@Override
publicvoidonAddismissed(){
Log.i("InterstitialAd","onAddismissed");
interad1.loadAd();
}
@Override
publicvoidonAdFailed(Stringarg0){
Log.i("InterstitialAd","onAdFailed");
}
@Override
publicvoidonAdPresent(){
Log.i("InterstitialAd","onAdPresent");
}
@Override
publicvoidonAdReady(){
Log.i("InterstitialAd","onAdReady");
}
});
interad1.loadAd();
returninterad1;
}

4、创建Handler

privateHandleraHandler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
switch(msg.what){
caseSHOW_AD:
if(interad.isAdReady()){
interad.showAd(AppActivity.this);
Log.d("LC","show");
}else{
interad.loadAd();
}
Log.d("LC","notshow");
break;
}
}
};

5、在onCreate加入代码

@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TodoAuto-generatedmethodstub
super.onCreate(savedInstanceState);
interad=getInsertAd();
ShowAdHelper.init(aHandler);
}

6、java层的编写就此结束了,接下去在C++层中通过jni调用ShowAdHelper类中的showMyAd函数

voidBackgroundLayer::loadAndroidAd()
{
#if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)//判断当前是否为Android平台
JniMethodInfominfo;
jobjectjobj;
boolb=JniHelper::getStaticmethodInfo(minfo,"org/cocos2dx/cpp/ShowAdHelper","showMyAd","()V");
jobj=minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID);
#endif
}

同时在BackgroundLayer文件开头加入

#if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
#include<jni.h>
#include"platform/android/jni/JniHelper.h"
#endif

然后在所需显示插屏广告的地方调用loadAndroidAd()函数即可

cocos2d-x学习笔记五接入百度联盟广告Android横幅和插屏广告的更多相关文章

  1. html5 移动端视频video的android兼容(去除播放控件、全屏)

    这篇文章主要介绍了html5 移动端视频video的android兼容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. Silver:用Swift编写iOS、Android和.NET应用

    Silver编译器可以为.NETCLR、Java/AndroidJVM和Cocoa运行时提供编译工作。

  3. Swift教程17-淡化MVC,使用MVVM框架开发轻巧便于维护的iOS/android app

    MVVM是微软提出一种移动开发框架,旨在针对传统的MVC框架,解决传统的MVC框架的控制器的臃肿问题.M:Model模型,也就是数据模型;比如一条微博,对应的所有字段合成一条微博整体,这个整体就是ModelV:View视图,只用来显示的视图,如iOS的UIView,Cell;当然在iOS中Storyboard中,view总是和控制器关联,这并不是严格的view如果我们纯手写代码定义一个view那么

  4. 早期Swift中Cocos2D初始化代码的重构

    但是遗憾的是Swift2.2中还是不支持Type的class属性关键字,只能用static,我们期待Swift3的改进吧!

  5. R.swift 让iOS项目像Android R 一样管理资源

    什么是R.Swift搞过的Android开发同学都知道,在Android开发中,其对于资源的引用非常方便,我们可以通过”R机制”来对Android中的图片、布局、动画配置、国际化字符串、尺寸等等资源进行非常方便快捷的引用。开妈搞iOS的时候,我瞬间觉得iOS的资源引用略为恶心,跟Android比起来,它更加蛋疼麻烦。R.Swift是一款基于Swift平台,针对iOS以及TVOS开发的仿Android资源引用框架。

  6. 手把手教你swift项目添加cocos2dx-lua

    去倒杯水吧,这个过程会很久。。。至此,工程已经全部配置完毕,你已经解决一个大Boss了;今天就到这里吧,之后我们再续如何用swift调用lua手把手教你swift项目添加cocos2dx-lua

  7. 手把手教你swift项目集成cocos2dx-js模块

    前几天在swift项目中集成了Lua模块,使得在swift工程中用Lua写游戏逻辑成为了可能,具体工程及配置见手把手教你swift项目添加cocos2dx-lua,由于公司最近要把js做的小游戏集成到iOS原生应用中,于是我们将解锁另外一个场景,好了,下面开始;同样的,首先你得有一个swift项目我们从头开始,建立一个swift项目;我们默认你已经可以自己创建一个全新的swift项目了,这很简单,不是么?

  8. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  9. android – 在IntelliJ中减小调试APK的大小

    我正在合作开发具有9个Android库和10个jar库的中型Android项目.我在IntelliJ中开发,我的协作者在Eclipse中工作.在Eclipse中,调试APK的大小约为2.5MB,在IntelliJ中它是20MB.这怎么可能?我可以在IntelliJ中减小APK的大小,以便更快地将其上传到设备中吗?解决方法APK是一个zip文件.将扩展名更改为.zip并解压缩.看看里面有什么.

  10. 如何构建自己的个人Android应用程序商店?

    如何为自定义或开源软件构建的Android个人应用商店创建.解决方法>使用提供应用程序的自定义或开源软件构建网站,以便人们可以下载它们>设计开发人员注册的手段&上传应用程序>???

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部