个人开发者只能依靠广告来获取微薄的收入,说起来确实有点可悲,最让人心寒的是,很多用户不理解,要求游戏要好玩,要免费,要没有广告,我只能说,你来。
吐槽完毕!进入正题,在Cocos2dx 中插入广告和直接在Android中插入广告主要的区别在于,在Cocos2dx 中是通过c++来调用Java代码从而实现广告的插入,本文将用插屏广告为例,进行讲解。
完成广告的嵌入,需要做如下准备
1.下载对应广告的SDK1.下载对应广告的SDK 这点不用讲太多,国内几个类似什么有米啊,友盟啊,不过上平台还是很坑,表示无奈。对应的广告平台都有很详细的介绍,这里就啰嗦了,主要来看第二三点
2.修改AppActivity.java
3.构建自定义c++文件并绑定lua
4.修改两个mk文件
5.调用广告
2.修改AppActivity.java 该文件在
C:\Users\user\Documents\Cocos\Jump\frameworks\runtime-src\proj.android\src\org\cocos2dx\lua
添加一个静态函数,作为c++调用的接口
文章图片
1.png 然后再handler中做逻辑处理,你要显示的广告就放在这里面,包括以后微信分享啊,什么的,只要通过改变what参数就可以实现各种功能
文章图片
2.png 3.构建自定义c++文件并绑定lua 关于这点在我的另一篇文章Cocos2dx Lua 绑定有过详细的阐述,对于不了解的朋友,可以先看看,知道怎么了绑定自定义c++之后,我们只要在自定义c++类中来调用java的接口,也就是步骤2中的
public static void showAdverisement(int what)
自定义类的头文件
#ifndef __ColorBlind__ADVERTISEMENT__
#define __ColorBlind__ADVERTISEMENT__
#include
using namespace cocos2d;
#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"
#include
#endif
#include "Cocos2d.h"
USING_NS_CC;
class CC_DLL Advertisement
{
public:
static void showAdvertisement(int);
static int test();
};
#endif
自定义类的源文件
#include "Advertisement.h"void Advertisement::showAdvertisement(int what)
{
//判断当前是否为Android平台 JniMethodInfo showAd;
#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/lua/AppActivity","showAdvertisement", "(I)V");
if(!isHave)
{
CCLog("jni:showAdvertisement is null");
}
else
{
//调用此函数
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID,what);
}
#endif
}int Advertisement::test()
{
return 100;
}
4.修改两个mk文件 自定义的c++文件在win32平台自然是没有问题的,但是编译到手机上往往会提示文件不存在等问题,原因便是mk文件没有注明自定义类。
打开
C:\Users\user\Documents\Cocos\Jump\frameworks\cocos2d-x\cocos
下的Android.mk文件
文章图片
3.png
在LOCAL_SRC_FILES后添加自定义类。
打开
C:\Users\user\Documents\Cocos\Jump\frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android
下的Android.mk文件
文章图片
4.png
在LOCAL_SRC_FILES后添加
../auto/lua_cocos2dx_custom_auto.cpp \
5.调用广告 调用广告其实就是调用c++了,在lua中通过cc.自定义类:自定义函数()来调用。这里便是
cc.Advertisement:Advertisement(1)
【Cocos2dx|Cocos2dx 插入广告】这样就将调用java中对应的函数来使得广告跳出和隐藏了。