1. 当贝点金SDK(yunos版)集成指南1.1 注册AppKey1.2 快速集成1.2.1 Android Studio1.2.2 Eclipse1.2.3 修改AndroidManifest.xml1.2.3.1 权限说明1.2.4 混淆相关配置1.2.5 初始化1.2.6 展示一个广告示例代码下载1.3 支持的广告类型1.3.1 闪屏启动广告(createSplashAdContainer)1.3.2 屏保广告(createScreenSaverAdContainer)1.3.3 视频贴片广告(createVideoPreAdContainer)1.3.4 视频暂停广告(createVideoPauseAdContainer)1.3.5 视频角标广告(createVideoFloatAdContainer)1.4 SDK API1.4.1 初始化广告1.4.2 创建广告容器1.4.3 打开广告1.4.4 关闭广告1.4.5 设置parentView1.4.6 变化adContainer大小1.4.7 广告是否正在展示1.4.8 广告是否尚未展示1.4.9 增加广告展示状态监听1.4.9.1 onDisplaying1.4.9.2 onFailed1.4.9.3 onFinished1.4.9.4 onClosed1.4.9.5 onTerminated1.4.9.6 onSkipped1.4.9.7 onTriggered1.5 技术支持1.6 FAQ
集成当贝点金广告SDK之前,您首先需要到当贝点金官网注册并且添加新应用,获取appKey
/appSecret
。
特别提醒:我们建议开发者在注册账号时使用企业邮箱,避免使用个人邮箱注册,防止由于人员流动带来的问题,建议使用的账号形式 :znds@企业域名、apps@企业域名、dev@企业域名。
首先在build.gradle
中添加当贝点金广告依赖,最新版本请点这里查看:
dependencies {
compile 'com.dangbei:sdk-euthenia:3.2.2'
}
如果无法正常集成请添加如下代码 :
xxxxxxxxxx
allprojects {
repositories {
mavenCentral()
}
}
同步Gradle。
如果你的so文件配置不是支持全部的ABI指令集的话,请根据实际情况过滤。例如只支持armeabi ,armeabi-v7a
,在build.gradle
添加如下代码 :
xxxxxxxxxx
android {
defaultConfig {
ndk {
abiFilters "armeabi" ,"armeabi-v7a"
}
}
}
同步Gradle。
aar
文件到本地。aar
文件,如有必要修改aar
后缀为zip
后进行解压。classes.jar
重命名为euthenia-sdk-{版本号}.jar
,并加入到您项目的classPath下。assets
目录下的文件到您项目中的assets
目录下。jni
目录下的文件到您项目中的jni相关目录(默认为libs目录)。打开AndroidManifest.xml
,添加如下代码:
xxxxxxxxxx
<manifest ...>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
xxxxxxxxxx
<application ...>
<receiver android:name="com.dangbei.euthenia.receiver.NetworkChangeReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
//添加渠道配置
//DangbeiAdManager.init(this, APPKEY, APP_SECRET);初始化调用此方法,则必须配置渠道
<meta-data android:value="znds" android:name="euthenia_channel"/>
</application>
所需权限 | 是否必须 | 用途 |
---|---|---|
INTERNET | 是 | 允许应用程序联网,以便向我们的服务器端发送数据 |
ACCESS_NETWORK_STATE | 是 | 检测联网方式,区分用户设备使用的是2G、3G或是WiFi |
ACCESS_WIFI_STATE | 是 | 获取用户设备的mac地址,我们会将mac地址作为用户的唯一标识 |
WRITE_EXTERNAL_STORAGE | 是 | 写入sd卡的权限 |
READ_EXTERNAL_STORAGE | 是 | 读取sd卡信息的权限 |
-keep class com.dangbei.euthenia.**{*;}
使用后台申请的Appkey
/AppSecret
在Application::onCreate()
处进行初始化,如下:
xxxxxxxxxx
DangbeiAdManager.init(this, APPKEY, APP_SECRET, CHANNEL);
xxxxxxxxxx
DangbeiAdManager.init(this, APPKEY, APP_SECRET);
支持channel字段在代码中写入或者在manifest中写入。
在某个Activity中,使用如下代码展示一个启动页广告:
xxxxxxxxxx
IAdContainer adContainer = DangbeiAdManager.getInstance().createSplashAdContainer(this);
adContainer.open();
更多的接入细节,可以参照demo代码,点击下载。
闪屏广告类型,在应用启动时调用展示,闪屏广告显示逻辑如下:
屏保广告显示逻辑如下:
视频贴片广告类型,在播放视频之前展示,可放大缩小播放窗口,广告显示逻辑如下:
视频暂停广告类型,在播放视频暂停时展示,广告显示逻辑如下:
open()
显示广告,调用close()
关闭广告弹窗广告类型,在应用使用的时候弹出展示,广告显示逻辑如下:
该api只需在
Application
的onCreate
方法中调用一次。
xxxxxxxxxx
DangbeiAdManager.init(context, APPKEY, APP_SECRET, CHANNEL);
applicationContext
,不能为空。AppKey
,不能为空。AppSecret
,不能为空。在展示广告前需要创建一个广告容器
xxxxxxxxxx
IAdContainer adContainer = DangbeiAdManager.getInstance().createSplashAdContainer(context);
Activity Context
,不能使用Application Context
。 xxxxxxxxxx
void open();
创建完广告后,再调用adContainer.open()
方法即可展示广告。
注意: 一个容器最多只能展示一次广告,也就是说,
open()
方法只能被调用一次,否则会抛出EutheniaException "The AdContainer CAN NOT be reused, please create a new AdContainer instance."
xxxxxxxxxx
void close();
开发者可以手动调用此方法来关闭广告,目前只有视频暂停广告和视频贴片广告支持开发这手动关闭广告,否则将会抛出EutheniaException 暂不支持此方法
xxxxxxxxxx
void setParentView(ViewGroup parentView);
创建完广告后,调用adContainer.setParentView()
方法设置广view的父view,目前只有视频暂停广告,视频贴片广告和视频贴片广告支持设置,否则将会抛出EutheniaException 暂不支持此方法
xxxxxxxxxx
void resize();
展示广告过程中,如果parentView
的大小改变,调用adContainer.resize()
方法来刷新广告adContainer的大小,目前只有视频贴片广告支持设置,否则将会抛出EutheniaException 暂不支持此方法
xxxxxxxxxx
boolean isDisplaying();
创建完广告后或者调用open()
方法以后,可以调用adContainer.isDisplaying()
方法来判断广告是否正在展示中。
xxxxxxxxxx
boolean isBeforeDisplaying();
从创建完广告后,到调用open()
方法,最后展示出广告有个过程,可以通过调用adContainer.isBeforeDisplaying()
方法来判断广告是否在展示之前。
开发者可以监听一个广告展示过程的状态,可以在相应的回调方法中进行各自的处理
xxxxxxxxxx
void setOnAdDisplayListener( OnAdDisplayListener onAdDisplayListener);
OnAdDisplayListener
支持的状态回调如下:
xxxxxxxxxx
public interface OnAdDisplayListener {
void onDisplaying();
void onFailed(Throwable throwable);
void onFinished();
void onClosed();
void onTerminated();
void onSkipped();
void onTriggered();
注意: 以上7种状态回调中,除
onDisplaying()
以外,其他方法都是广告的最终状态。所有的回调方法都运行在MainThread
。 在一次广告展示过程中,onFailed
、onFinished
、onClosed
、onTerminated
、onSkipped
、onTriggered
这几个方法有且只有一个方法会被回调。
当广告一旦处于展示中,此方法会被回调。
当广告展示过程失败时会被回调。这里的失败的可能性如下:
开发者可以通过打印这个方法的Throwable
来判断广告展示失败的原因。
如果该广告设置了展示n秒后自动关闭,当广告正常展示n秒后,广告结束,此方法就会被调用。
如果该广告展示过程中被用户手动关闭(开发者调用了close
方法显式地关闭了广告),此方法就会被调用。
如果在广告展示过程中,Activity被用户关闭(比如用户按了返回键使得Activity:onDestroy
了等等),则认为广告被终止,此方法会被调用。
某些广告支持在展示n秒之后允许用户跳过广告,当用户按了“跳过”之后,广告展示结束,此方法就会被回调。
CPC类型的广告,支持用户点击触发广告,跳转到其他页面(其他App、H5页面等等),广告展示结束,此方法就会被回调。
智能电视网
联系客服:联系客服
Email:report@znds.com
☺为了能够尽快响应您的反馈,请提供您的appkey及logcat中的详细出错日志,您所提供的内容越详细越有助于我们帮您解决问题。
Q 01. 打开广告时抛出
EutheniaException "The AdContainer CAN NOT be reused, please create a new AdContainer instance."
异常?
A 01. 同一个
AdContainer
对象只能打开一次广告,也就是说,open()
方法只能被调用一次。如果需要再次展示广告,则需要重新创建AdContainer
。
Q 02. 集成测试的时候一直无法出现广告?
A 02. 请确定后台正确的创建了测试广告。
Q 03. 集成测试的时候,后台已经创建了广告,还是一直无法出现广告?
A 03. 请确定集成设备的时间是否是网络时间。
Q 04. 抛出---Query local available ad placements EMPTY!--->异常,不展示是因为?
A 04. 本地数据库中无可用广告。
请确认:
1、后台配置广告媒体与接入apk是否为同一个;
2、当前时间(设备的系统时间)是否在配置广告的展示周期中;
3、配置的广告是否有设置频控;
4、配置的广告是否有每日展示次数上限,是否已达上限;