cocos2dx加第三方广告,虽然,网上能搜索到好多相关的文章教程,但是教程作者要么没讲全面,要么是文章久远,用的是老版本,对于像我这种新手,直接用3.x版本开搞的,真心用不上。自己整了好久,总算搞定了,这里记录下来,希望也能帮到像我这样的新手。老鸟别喷。
我使用的是cocos2dx接入有米的插屏广告,用有米是因为现在8月刚好在做活动,
新注册用户首次接入插屏广告有¥50元奖励,这里是传送门注册
这里我的应用也刚好上市场了,请指教 http://zhushou.360.cn/detail/index/soft_id/1931157?recrefer=SE_D_%E5%88%AB%E7%A2%B0%E6%96%B9%E5%9D%97
首先,需要明白一点,大多广告平台提供的广告SDK都是android、iOS版本,并没有单独针对cocos2dx的,这里我们要下载android版本的SDK,并使用cocos2dx通过JNI方式调用android弹出插屏广告。
android 广告SDK导入配置我就不多说了,按平台的开发文档来。这里直接上cocos2dx源码:
MyJniHelper.h
#pragma once
#include "cocos2d.h"
USING_NS_CC;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include
#include "platform/android/jni/JniHelper.h"
#define CLASS_NAME "org/cocos2dx/lib/Cocos2dxHelper"
#endif
class MyJniHelper
{
public: MyJniHelper();
~MyJniHelper();
static void showSpotAds();
};
```
MyJniHelper.cpp
void MyJniHelper::showSpotAds()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "showSpotAds", "()V"))
{
t.env->CallStaticVoidMethod(t.classID, t.methodID); t.env->DeleteLocalRef(t.classID);
}
#endif
}
```
上面定义了JNI调用方法,接下是要在android端写弹出广告的方法,写在哪,其实上面已经定义了org/cocos2dx/lib/Cocos2dxHelper
也就是org.cocos2dx.lib.Cocos2dxHelper.java这个类,要定义一个showSpotAds方法,()V指的是这个方法返回是void,无参数的。所以打开Cocos2dxHelper.java在类的最后添加如下方法:
public static void showSpotAds(){
//调用广告SDK
SpotManager.getInstance(sActivity).showSpotAds(sActivity);
}
```
在需要弹出广告的时候MyJniHelper::showSpotAds(); 就可以了。

