爬过了各种各样的坑,我们终于有一个像样的小游戏了!那么,接下来的工作就是接入广告,上线盈利

芒果是一个聚合广告平台,可以接入芒果后展示多盟、百度、AdMob等灰常多家的广告,非常方便。

1.广告平台配置

1.1注册芒果账号:http://www.adsmogo.com/

进入芒果后选择 App管理 -> 添加App,填好各种信息后点击下方的 ‘添加App’ 按钮,这里过程很简单,我就不截图啦。

点击App列表就可以看到我们刚刚添加的App了,点击App名称可以进入App的配置。这里我们先暂停一下,既然芒果是个聚合的广告平台,展示的是别的平台的广告,那么我们这里就需要在其他平台同样申请一个App,这里我们选择多盟,这个平台随意啦,大家根据自己的需要选择,也可以选择多个。

1.2注册多盟:http://www.domob.cn/

进入多盟开发者后台,点击 我的应用 -> 添加应用,然后填写应用信息。

添加广告位,这里注意一下一个应用是可以有多个广告位的~ 广告位类型选择普通插屏广告位。

成功后我们就可以得到publisher ID和广告位ID了。到这里多盟平台就配置完了。

1.3填写publisherID和广告位ID

返回芒果,到App配置的页面,选择全屏/插屏,然后点击多盟,填写publisher ID和广告位ID。


保存后在优先级上打个勾,到这里芒果平台的配置也搞定了~ 记下芒果的应用ID,我们在接入广告的时候需要用到。

2.导入SDK

先创建一个cocos2dx项目,确保可以编译到安卓上,怎么做就不用我介绍了吧(*^__^*)

下载芒果cocos2dx版本的sdk和多盟的sdk,找到我们需要的jar包。

打开eclipse,导入项目,我这里是AndroidTest,在libs目录上右键(如果没有libs就新建一个),选择import -> General -> File System,然后点击next


找到芒果和多盟的sdk,导入。


选中libs文件夹中的两个jar,右键 -> Build Path -> Add to Build Path。


3.添加用户权限

3.1打开AndroidManifest.xml,在<application>标签后面加入下面的代码:

<!-- 添加用户权限 -->
	<!-- 连接网络权限INTERNET,用亍请求广告(必须),mogo会使用该权限 -->
	<uses-permission android:name="android.permission.INTERNET" />
	<!-- 读取手机基本信息权限READ_PHONE_STATE,用亍精确统计用户的机型等信息(必须),mogo 会使用该权限 -->
	<uses-permission android:name="android.permission.READ_PHONE_STATE" />
	<!-- 读取网络信息权限ACCESS_NETWORK_STATE,用亍识别gprs网络的接入点的情况(必须),mogo会使用该权限 -->
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<!-- 获取用户地理信息权限,用亍帮劣精 确统计 开发 者的程 序发布 乀后的 用户分 布情况,mogo会 使用该权限-->
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
	<!-- 读写sd 卡的权限,用亍缓存广告所用到的图片,节 省流量,并可 获得更 好的用 户体验,mogo会使用该权限-->
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
	<!-- 获得当前wifi的状态,微于广告平台需要 此权限,mogo会 使用该 权限 -->
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 按效果付费功能需要的权限,mogo会使用该 权限 -->
    <uses-permission android:name="android.permission.GET_TASKS"/>
    <!--多盟所需权限,无此权限多盟将无法 展示广 告  -->
	<uses-permission android:name="android.permission.VIBRATE" />

如下图所示:

3.2 声明mogo的Activity,在<application>标签里插入以下代码:

<!-- 声明mogo的Activity -->
		<activity
		android:name="com.adsmogo.adview.AdsmogoWebView"
		android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" />
		<activity android:name="com.adsmogo.mriad.view.AdsmogoActionHandler"
		android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" >
		</activity>
		<!-- 注册Service,自主广告不交换广告的应用下载功能所需 -->
		<service android:name="com.adsmogo.controller.service.UpdateService" android:exported="true" android:process=":remote" />
		<!-- 注册Service,安装应用所用 -->
		<service android:name="com.adsmogo.controller.service.CountService" android:exported="true" android:process=":remote" />
如下图所示:


4. 植入广告

4.1 在Cocos2dxActivity的onCreate函数中加入以下代码:

<span style="white-space:pre">		</span>AdsmogoInterstitialManager.setDefaultinitManualRefresh(false); 
		//设置AppKey
		AdsmogoInterstitialManager.setDefaultinitAppKey("mogoID"); 
		//设置当前Activity对象 
		AdsmogoInterstitialManager.setInitactivity(Cocos2dxActivity.this); 
		//初始化(必须先设置默认的AppKey和Activity对象才能通过此方法初始化SDK) 
		AdsmogoInterstitialManager.shareInstance().initDefaultInterstitial(); 
		
		handler = new Handler() {

			@Override
			public void handleMessage(Message msg) {
				// Todo Auto-generated method stub
				switch (msg.what) {
					case 3:
						/**
						 *进入展示时机
						 *当应用需要展示全屏广告调用interstitialShow(boolean isWait);
						 *通知SDK进入展示时机,SDK会竭尽全力展示出广告,当然由于网络等问题不能立即展示
						 *广告的,您可以通过参数isWait来控制授权SDK在获得到广告后立即展示广告。
						 */
						AdsmogoInterstitialManager.shareInstance()
						.defaultInterstitial().interstitialShow(true);
						break;
					case 5:
						/**
						 *退出展示时机
						 *如果您之前进入了展示时机,并且isWait参数设置为YES,那么在需要取消等待广告展示的
						 *时候调用方法interstitialCancel();来通知SDK
						 */
						AdsmogoInterstitialManager.shareInstance()
						.defaultInterstitial().interstitialCancel();
						break;
					default:
						break;
				}
			}
		};
将其中的mogoID替换成在芒果平台上申请到的应用ID。

4.2 在Cocos2dxActivity中加入下面三个函数:

<span style="white-space:pre">	</span>//退出展示时机
	public static void closeInterstitial(){
		Message msg = handler.obtainMessage();
		msg.what = 5;
		handler.sendMessage(msg); 
	}
	//向handler发送要展示全插屏的消息
	public static void showInterstitialStatic(){
		Log.e("mogoCocos2dx Demo","showInterstitialStatic");
		Message msg = handler.obtainMessage();
		msg.what = 3; handler.sendMessage(msg);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		AdsmogoLayout.clear();
		if (adView != null) {
			adView.clearThread();
		}
		Log.e("Adsmogo","onDestroy");
		System.exit(0);
	}

4.3 新建C++文件

在classes目录下新建mogOAd.h和mogOAd.cpp。

mogOAd.h的内容是:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#include <android/log.h>
#endif
#include "cocos2d.h"
  using namespace cocos2d;
class mogOAd
{
	public:
	static void showInterstitial();
	static void closeInterstitial();
 };

mogOAd.cpp的内容是:
#include "mogOAd.h"
void mogOAd::showInterstitial()
{
 	#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
	 JniMethodInfo showInterstitial;
	bool isHave = JniHelper::getStaticmethodInfo(showInterstitial,"org/cocos2dx/cpp/Cocos2dxActivity","showInterstitialStatic","()V");
	 if (!isHave) {
	 cclog("jni:hideBannerStatic false");
	}else{
	cclog("jni:hideBannerStatic true");
	showInterstitial.env->CallStaticVoidMethod(showInterstitial.classID,showInterstitial.methodID);
	 }
	  #endif
}
void mogOAd::closeInterstitial()
{
 	#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
	 JniMethodInfo closeInterstitial;
	bool isHave = JniHelper::getStaticmethodInfo(closeInterstitial,"closeInterstitial","()V");
	 if (!isHave) {
	 cclog("jni:hideBannerStatic false");
	}else{
	cclog("jni:hideBannerStatic true");
	
	closeInterstitial.env->CallStaticVoidMethod(closeInterstitial.classID,closeInterstitial.methodID);
	 }
	  #endif
}

4.4 将HelloWorldScene.cpp中的点击按钮方法改为:

void HelloWorld::menuCloseCallback(Ref* pSender)
{
    mogOAd::showInterstitial();
}

OK,功德圆满,在Android.mk里加入mogOAd.cpp,编译,运行。

成功!接下来提交审核,等待通过就可以了~

cocos2dx Android接入芒果插屏广告的更多相关文章

  1. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  2. 利用Node实现HTML5离线存储的方法

    这篇文章主要介绍了利用Node实现HTML5离线存储的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 详解如何通过H5(浏览器/WebView/其他)唤起本地app

    这篇文章主要介绍了详解如何通过H5(浏览器/WebView/其他)唤起本地app的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. H5混合开发app如何升级的方法

    本篇文章主要介绍了H5混合开发app如何升级的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. AmazeUI 折叠面板的实现代码

    这篇文章主要介绍了AmazeUI 折叠面板的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码

    这篇文章主要介绍了HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  7. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  8. html5唤起app的方法

    这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. HTML5拍照和摄像机功能实战详解

    这篇文章主要介绍了HTML5拍照和摄像机功能实战详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

随机推荐

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

返回
顶部