404 Not Found


nginx
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx

1、概述

1.1面向人群

本产品面向需要在Android产品中接入玉米移动广告SDK的开发人员 。

1.2开发环境

OS: Windows, Mac, Linux

Android SDK: 2.3 (API level 9)

IDE: Eclipse with ADT (ADT version 23.0.4),Android-studio

Java: jdk7

2、SDK下载

2.1三方SDK 选择

2.2玉米SDK下载

请下载玉米SDK并将其添加到您的工程中。

2.3三方SDK下载

请下载三方SDK,并根据各三方平台说明将其添加到您的工程中。

3、开发环境配置

3.1.添加lib文件

Android-studio:

添加以下build.gradle

//确认 android studio 的 Project 根目录主 build.gradle 中配置了 jcenter 支持。
buildscript {
	repositories {
		jcenter()
	}
}
allprojets {
	repositories {
		jcenter()
	}
}
//在 module 的 build.gradle 中添加依赖
dependencies {
	compile 'com.yumimobi.ads:mediation:3.3.6.+'
	//如果希望支持富媒体广告,可选择添加
	compile 'com.yumimobi.ads.mediation:mraid:3.3.6.+'
} 						

Eclipse :

玉米移动广告需要的lib文件均放在SDK的lib文件夹下:

YumiMobi_Android_vX.X.X.jar

Yumi_Adapter_Mraid_vX.X.X.jar

android-support-v4.jar

android-support-v7-appcompat.jar

google_play_service的lib工程

使用时在工程的根目录下创建libs文件夹,将YumiMobi_Android_vX.X.X.jar添加到创建好的libs文件中。

如希望支持富媒体广告,请将Yumi_Adapter_Mraid_vX.X.X.jar添加到创建好的libs文件中。

视需求添加android-support-v4.jar、android-support-v7-appcompat.jar到libs文件中,需要用到V4或V7包时必须使用我们提供的jar。

关于google_play_service工程:

google_play_service工程非必加,部分平台广告需要google_play_service支持,玉米移动广告不需要添加。使用时需要将此工程作为library工程, 添加到您的工程中。并在manifest.xml文件的<application>标签内增加以下代码:

<meta-data
     android:name="com.google.android.gms.version" 
     class="kix-line-break" 
     android:value="@integer/google_play_services_version"/>

3.2必要权限

在工程中的manifest.xml中添加以下权限

必要权限:


							

可选权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>

3.3注册组件

在工程中的manifest.xml文件中添加:


						

4、代码集成

4.1横幅

创建一个ViewGroup作为横幅广告容器,并添加到工程中Activity的适当位置。

之后调用如下代码:

//创建YumiBanner对象. activity是您要展示横幅的activity。 SlotID,您需要通过玉米移动平台创建一个广告位ID以在应用中使用,auto代表使用模式是否是自动。
//auto==true 横幅广告自动轮换
//auto==flase 横幅广告手动轮换,再次轮换需要重复调用banner.requestYumiBanner();
//若您在单独使用玉米广告,请开启玉米广告自动轮换,将字段置为true。若您在通过其他聚合工具使用玉米广告,为保证广告效果,请停止玉米广告自动轮换,将字段置为flase
banner = new YumiBanner(activity, "YOUR_SLOT_ID", auto);
//将您创建好的ViewGroup作为banner容器, 同尺寸一并设置
// bannerContainer  您的广告容器
// AdSize.BANNER_SIZE_AUTO  SDK自动根据屏幕设置320*50或728*90
// isMatchWindowWidth ==true 时Banner的宽度为屏幕宽度
banner.setBannerContainer(bannerContainer, AdSize.BANNER_SIZE_AUTO, isMatchWindowWidth);
//根据您在平台的配置, 设置渠道, 您只需要设置一次渠道. 重复调用以最后一次为准.
banner.setChannelID(channelStr);
//根据您在平台的配置, 设置版本, 您只需要设置一次版本. 重复调用以最后一次为准.
banner.setVersionName(versionStr);
//开始请求广告, auto==true时此方法只需要调用一次
banner.requestYumiBanner();

注:ChannelID是指应用发布的渠道标示,填写后YUMI平台可根据渠道ID进行数据统计和效果分析;以Popstar!消灭星星官网正版为例,当游戏发布到三星渠道时,需要将setChannelID(channelStr)设置为setChannelID(‘SamSung’)

渠道标示为YUMI平台生成信息,不可随意修改

渠道名称
ChannelID
三星
SamSung
2345手机助手
2345shouzhu

在Activity生命周期方法中实现:

@Override
protected void onDestroy() {
	if (banner!= null) {
		banner.onDestory();   //销毁横幅对象
	}
	super.onDestroy();
}

4.2插屏

在Activity的onCreate()方法内添加以下代码:

//创建YumiInterstitial对象. activity是插屏展示的activity。SlotID,您需要通过玉米移动平台创建一个广告位ID以在应用中使用。auto代表使用模式是否是自动。
//auto==true 插屏广告自动请求下一条,为保证广告效果建议设为自动请求
//auto==flase 插屏广告不自动请求下一条,需要重复调用interstitial.requ estYumiInterstitial()
//若您在使用玉米广告,为保证广告效果,请开启玉米广告自动轮换,将字段置为true。
interstitial = new YumiInterstitial(activity, "YOUR_SLOT_ID", auto);
//请根据平台的配置, 设置渠道, 您只需要设置一次渠道. 重复调用取最后一次.
interstitial.setChannelID(channelStr);
//情根据平台的配置, 设置版本, 您只需要设置一次版本. 重复调用取最后一次.
interstitial.setVersionName(versionStr);
//开始请求广告
interstitial.requestYumiInterstitial();

注:ChannelID是指应用发布的渠道标示,填写后YUMI平台可根据渠道ID进行数据统计和效果分析;以Popstar!消灭星星官网正版为例,当游戏发布到三星渠道时,需要将setChannelID(channelStr)设置为setChannelID(‘SamSung’)

渠道标示为YUMI平台生成信息,不可随意修改

渠道名称
ChannelID
三星
SamSung
2345手机助手
2345shouzhu

在需要展现插屏广告的时候,调用以下代码:

//立即展示  如果有预加载完成的插屏, 立刻显示插屏弹窗. (弹出速度根据机型, 可能有视觉延迟), 如果没有预加载完成的插屏, 则不展示, 并放弃此次展示机会. 直到下次调用.
if (interstitial != null) {
	interstitial.showInterstitial(false);
}
//延迟展示  如果在您意图展示插屏时, 预加载尚在进行, 延迟展示可以允许SDK等待此次预加载完成, 完成后自动展示插屏. 等待的时间不定.
if (interstitial != null) {
	interstitial.showInterstitial(true);
}
//取消延迟展示   延迟展示时当您需要进行其他操作, 而延迟展示还没进行, 您需要调用以下方法取消此次延迟展示. 取消后, 预加载完成时不会再进行插屏展示. 直到下次调用.
if (interstitial != null) {
	interstitial.cancelInterstitialDelayShown();
}

在Activity生命周期方法中实现:

@Override
protected void onDestroy() {
	if (interstitial != null) {
		interstitial .onDestory();
	}
	super.onDestroy();
}

因为不同平台的插屏显示弹出不同. 需要在您Activity的onBackPressed()方法中添加如下代码:

注意:在使用插屏时,请务必增加此方法,避免back键逻辑混乱。

//在使用插屏时,必须增加此方法. 避免back键逻辑混乱.
if (interstitial.onBackPressed()) {
	return ;
}
super.onBackPressed();

4.3激励视频

在Activity的onCreate()方法内添加以下代码:

//创建YumiMedia对象. activity是您要展示插屏的activity。SlotID,您需要通过玉米移动平台创建一个广告位ID以在应用中使用。auto代表使用模式是否是自动。
media = new YumiMedia(activity, "YOUR_SLOT_ID");
//请根据平台的配置, 设置渠道, 您只需要设置一次渠道. 重复调用取最后一次.
media.setChannelID(channelStr);
//情根据平台的配置, 设置版本, 您只需要设置一次版本. 重复调用取最后一次.
media.setVersionName(versionStr);
//开始请求广告
media.requestYumiMedia();

注意:每个YumiMedia实例,开始请求广告的方法只需要调用一次。

ChannelID是指应用发布的渠道标示,填写后YUMI平台可根据渠道ID进行数据统计和效果分析;以Popstar!消灭星星官网正版为例,当游戏发布到三星渠道时,需要将setChannelID(channelStr)设置为setChannelID(‘SamSung’)

渠道标示为YUMI平台生成信息,不可随意修改

渠道名称
ChannelID
三星
SamSung
2345手机助手
2345shouzhu

检查视频是否准备完成,调用以下代码:

if (media!= null) {
	media. isMediaPrepared ();
}

注意:建议调用间隔5秒一次。

在您需要展现视频广告的时候,调用以下代码:

//立即展示
if (media!= null) {
	media.showMedia();
}

注意:

1. 完成上述接入后,可以完成基本的视频接入,但是无法获取奖励回调。 请根据高级功能中状态监听部分,增加监听获取奖励回调。

2. 广告在关闭或请求失败后会自动请求下一条广告。

3. media.requestYumiMedia() 方法只在一开始调用一次即可。

在Activity生命周期方法中实现:

@Override
protected void onDestroy() {
	if (media != null) {
		media.onDestory();
	}
	super.onDestroy();
}

4.4 开屏

在Activity的onCreate()内添加以下代码:

//创建开屏对象. 
//activity:是您要展示插屏的activity,
//SlotID:您需要通过玉米移动平台创建一个广告位ID以在应用中使用。
// container:广告容器
// width/height:广告容器宽高
// SplashADListener:广告回调监听
splashAD = new SplashAD(activity, SlotID, container, adwidth, adheight, SplashADListener); 

在Activity相应生命周期中调用相应方法:

@Override
protected void onDestroy() {
	if (splashAD!= null) {
		splashAD.onDestory();
	}
	super.onDestroy();
}

4.5 原生广告

在Activity的onCreate()内添加以下代码

// 创建一个原生广告对象,YOUR_SLOT_ID是在玉米后台申请的广告位ID
YumiNative nativeAd = new YumiNative(this, “YOUR_SLOT_ID”);
//请根据平台的配置, 设置渠道, 您只需要设置一次渠道. 重复调用取最后一次.
nativeAd.setChannelID(channelStr);
//情根据平台的配置, 设置版本, 您只需要设置一次版本. 重复调用取最后一次.
nativeAd.setVersionName(versionStr);
// 设置原生广告回调接口
nativeAd.setNativeEventListener(new IYumiNativeListener()
{
@Override
public void onLayerPrepared(int adCount) 
{
        // 请求成功的回调,其中adCount是返回的广告条数
}
@Override
public void onLayerFailed(LayerErrorCode error)
{
        // 请求失败的回调,其中error是请求失败的错误提示
}
@Override
public void onLayerClick() {
    //广告点击回调
}
});
// 请求广告,成功或失败的结果会在回调接口中返回
nativeAd.requestYumiNative(); 

注:ChannelID是指应用发布的渠道标示,填写后YUMI平台可根据渠道ID进行数据统计和效果分析;以Popstar!消灭星星官网正版为例,当游戏发布到三星渠道时,需要将setChannelID(channelStr)设置为setChannelID(‘SamSung’)

渠道标示为YUMI平台生成信息,不可随意修改

渠道名称
ChannelID
三星
SamSung
2345手机助手
2345shouzhu

在Activity生命周期onDestroy()方法中, 增加对应的SDK生命周期方法:

@Override
protected void onDestroy()
{
	super.onDestroy();
	if (nativeAd!=null)
	{
		nativeAd.onDestroy();
	}
}

5、高级功能

5.1 横幅

5.1.1设置广告状态监听

如果需要监听横幅广告生命周期,请在创建YumiBanner对象后, 调用如下方法:

//设置横幅状态监听.
banner.setBannerEventListener(bannerListener);

关于广告监听,您可以直接实例化一个IYumiBannerListener,并根据回调增加您自己的逻辑。监听有以下回调方法:

onBannerPreparedFailed(LayerErrorCode errorCode)

当横幅加载失败时回调,可以通过errorCode.getMsg()获得失败原因。

onBannerPrepared()

当横幅加载成功时回调

onBannerExposure()

当横幅展示成功时回调

onBannerClosed()

当横幅关闭时回调

onBannerClicked()

当横幅点击时回调

接入示例:

//创建横幅状态监听
bannerListener = new IYumiBannerListener() {
	@Override
	public void onBannerPreparedFailed(LayerErrorCode errorCode) {
		//当横幅加载失败时回调. 可以通过errorCode.getMsg()获得失败原因.
	}
	@Override
	public void onBannerPrepared() {
		//当横幅加载成功时回调. 
	}
	@Override
	public void onBannerExposure() {
		//当横幅展示成功时回调.
	}
	@Override
	public void onBannerClosed() {
		//当横幅关闭时回调.
	}
	@Override
	public void onBannerClicked() {
		//当横幅点击时回调.
	}
};

5.1.2 横幅显示和隐藏

通过以下方法隐藏和恢复显示横幅:

//隐藏横幅, 同时暂停横幅轮换请求 
banner.dismissBanner();
//恢复显示横幅, 同时恢复横幅轮换请求 
banner.resumeBanner();

5.1.3 横幅自适应屏幕宽度

  • 非自适应
  • 自适应

横幅设置广告容器的同时,玉米SDK提供了 boolean 类型的参数:isMatchWindowWidth。该参数为横幅宽度是否充满全屏,当该参数为true时横幅的宽度为屏幕宽度。

5.2 插屏

设置广告状态监听

如果您需要监听插屏广告生命周期,请在创建YumiInterstitial对象后,调用如下方法:

//设置插屏状态监听.
interstitial.setInterstitialEventListener(interstitialListener);

关于广告监听,您可以直接实例化一个IYumiInterstitialListener,并根据回调增加您自己的逻辑。监听有以下回调方法:

onInterstitialPreparedFailed(LayerErrorCode error)

当插屏加载失败时回调,可以通过errorCode.getMsg()获得失败原因。

onInterstitialPrepared()

当插屏加载成功时回调。 注意: 请不要直接在此回调中调用插屏的展示方法.

onInterstitialExposure()

当插屏展示成功时回调

onInterstitialExposureFailed()

当插屏展示失败时回调

onInterstitialClosed()

当插屏关闭时回调

onInterstitialClicked()

当插屏点击时回调

接入示例:

//创建插屏状态监听
interstitialListener = new IYumiInterstititalListener() {			
	@Override
	public void onInterstitialPreparedFailed(LayerErrorCode error) {
		//当插屏加载失败时回调. 可以通过errorCode.getMsg()获得失败原因.
	}			
	@Override
	public void onInterstitialPrepared() {
		//当插屏加载成功时回调.
	}			
	@Override
	public void onInterstitialExposure() {
		//当插屏展示成功时回调.
	}			
	@Override
	public void onInterstitialExposureFailed () {
		//当插屏展示失败时回调.
	}
	@Override
	public void onInterstitialClosed() {
		//当插屏关闭时回调.
	}			
	@Override
	public void onInterstitialClicked() {
		//当插屏点击时回调.
	}
};

5.3激励视频

设置广告状态监听

如果您需要监听视频广告生命周期,请在创建YumiMedia对象后, 调用如下方法:

//设置视频状态监听.
media.setMediaEventListner(mediaListener);

关于广告监听,您可以直接实例化一个IYumiMediaListener,并根据回调增加您自己的逻辑。监听有以下回调方法:

onMediaExposure()

当激励视频展示成功时回调

onMediaClosed()

当激励视频关闭时回调

onMediaClicked()

当激励视频点击时回调

onMediaIncentived()

当激励视频播放完成, 可以获取奖励时回调。注意: 如果未完成播放, 不会回调此方法. 另外, 此方法在onMediaClosed ()之前触发.

接入示例:

//创建视频状态监听
mediaListener = new IYumiMediaListener() {							
	@Override
	public void onMediaIncentived() {
		//当激励视频获得奖励时回调			
        }			
	@Override
	public void onMediaExposure() {
		//当激励视频展示成功时回调.
	}			
	@Override
	public void onMediaClosed() {
		//当激励视频关闭时回调.				
	}			
	@Override
	public void onMediaClicked() {
		//当激励视频点击时回调.
	}
};

5.4 开屏

设置广告状态监听

关于广告监听,您可以直接实例化一个SplashADListener,并根据回调增加您自己的逻辑。监听有以下回调方法:

onSplashShow()

当开屏展示时回调

onSplashClose()

当开屏关闭时回调

onSplashClick()

当开屏点击时回调

onSplashFailed()

当开屏加载失败时回调

接入示例:

//创建视频状态监听
splashListener = new SplashADListener () {							
	@Override
	public void onSplashShow () {
		//当开屏展示时回调		
        }			
	@Override
	public void onSplashFailed () {
		//当开屏加载失败时回调
	}			
	@Override
	public void onSplashClose () {
		//当开屏关闭时回调				
	}			
	@Override
	public void onSplashClick () {
		//当开屏点击时回调
	}
};

5.5 原生广告展示说明

如果您需要使用原生广告. 请参考如下方法:

if (nativeAd.getADCount() > 0))//通过剩余广告条数判断是否存在下一条广告
{
	final NativeContent content = nativeAd.nextContent();//提取下一条广告
	int type = content.getContentType();//获取广告类型 1:物料形式 2:布局形式
	    
	if (type == 1) // 物料形式
	{
	        content.getDesc();//获取广告详情文字
	        content.getIcon_url();//获取icon的url
	        content.getImg_url();//获取广告图片的url
	        content.getImg_height();//获取广告图片的宽,获取不到时为0
	        content.getImg_width();//获取广告图片的高,获取不到时为0
	        content.getJumpUrl();//获取广告点击跳转的url
	        content.getTitle();//获取广告的标题文字
	}
	else if (type == 2)
	{
	        View view = content.getView(); //获取广告布局
	}
}

为了保证您的收益,请您在相应的位置调用以下相应的广告上报方法(重要):

content.reportShow(container); //广告展示时上报(container为广告父布局)
content.reportClick(container); //广告点击时上报(container为广告父布局)

5.6调试模式

玉米广告SDK为开发者提供了一个检测三方平台集成状态的调试模式,如图:

使用步骤:

1.如果在平台没有设置版本、渠道,调用方法打开调试页面:

YumiSettings.startDebugging (Activity,BannerSlotID,InterstitialSlotID, MediaSlotID);

如果设置了版本、渠道,根据您在平台的配置需要设置渠道、版本调用方法打开调试页面:

YumiSettings.startDebugging (Activity, BannerSlotID,InterstitialSlotID, MediaSlotID, channelID, versionName);

2.玉米SDK将获取配置并展示三方平台列表,进入debug页面:

(1)页面展示为Searching for third party ADnetwork adapters:表示未进行配置,请检查应用的不同广告形式配置情况,如果问题仍未解决,请通过邮件联系我们:support@yumimobi.com

(2)玉米SDK将获取配置并展示三方平台列表,左侧如果为绿色表示该平台正确接入并展示成功过广告

3.选择一家平台点击进入

(1)SDK Available 为绿色时表示三方平台适配器已添加;当为红色时表示三方平台适配器未添加,回到3.1-2检查该平台adapter是否添加

(2)Configuration present为绿色时表示三方平台适配器组件Manifes已注册;当为红色时表示三方方平台适配器组件Manifest未注册,可回到

3.3检查该平台适配器组件是否添加

(3)SDK Failed to start or No_fill 为绿色表示广告曾经展示成功过;当为红色时表示还未展示成功过广告, 可继续进行下一个步骤,如果所有步骤完成后仍未红色,请邮件联系我们support@yumimobi.com

4.点击Fetch开始请求广告,点击Show展示广告

5.广告展示成功后检查项全部变为绿色,表示该家平台接入成功

6.应用发布前需要将调试模式注释掉

5.7 Android6.0以上系统权限处理

当您的应用targetSdkVersion为23及以上时,可选择以下方法进行权限检查并且弹窗提示用户授权。

注:该方法默认为false, 不会对用户进行权限提示并且不会导致崩溃。设为true,会进行权限检查并且弹窗提示用户授权。该方法在实例化广告之前调用,并且需要添加android-support-v4.jar。

YumiSettings.runInCheckPermission(true);

5.8 是否GooglePlay发布版本

注:如果您的APP是在GooglePlay发布,请设置以下方法。

YumiSettings. setAppIsGooglePlayVersions (true);

5.9 混淆

如果您的工程需要混淆编译, 请在混淆文件内增加以下内容。


						
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx