Cocos2dx|Cocos2dx 插入广告

个人开发者只能依靠广告来获取微薄的收入,说起来确实有点可悲,最让人心寒的是,很多用户不理解,要求游戏要好玩,要免费,要没有广告,我只能说,你来。
吐槽完毕!进入正题,在Cocos2dx 中插入广告和直接在Android中插入广告主要的区别在于,在Cocos2dx 中是通过c++来调用Java代码从而实现广告的插入,本文将用插屏广告为例,进行讲解。
完成广告的嵌入,需要做如下准备

1.下载对应广告的SDK
2.修改AppActivity.java
3.构建自定义c++文件并绑定lua
4.修改两个mk文件
5.调用广告
1.下载对应广告的SDK 这点不用讲太多,国内几个类似什么有米啊,友盟啊,不过上平台还是很坑,表示无奈。对应的广告平台都有很详细的介绍,这里就啰嗦了,主要来看第二三点
2.修改AppActivity.java 该文件在
C:\Users\user\Documents\Cocos\Jump\frameworks\runtime-src\proj.android\src\org\cocos2dx\lua

添加一个静态函数,作为c++调用的接口

Cocos2dx|Cocos2dx 插入广告
文章图片
1.png 然后再handler中做逻辑处理,你要显示的广告就放在这里面,包括以后微信分享啊,什么的,只要通过改变what参数就可以实现各种功能
Cocos2dx|Cocos2dx 插入广告
文章图片
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文件
Cocos2dx|Cocos2dx 插入广告
文章图片
3.png
在LOCAL_SRC_FILES后添加自定义类。
打开
C:\Users\user\Documents\Cocos\Jump\frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android

下的Android.mk文件

Cocos2dx|Cocos2dx 插入广告
文章图片
4.png
在LOCAL_SRC_FILES后添加
../auto/lua_cocos2dx_custom_auto.cpp \

5.调用广告 调用广告其实就是调用c++了,在lua中通过cc.自定义类:自定义函数()来调用。这里便是
cc.Advertisement:Advertisement(1)

【Cocos2dx|Cocos2dx 插入广告】这样就将调用java中对应的函数来使得广告跳出和隐藏了。

    推荐阅读