目录
项目配置
项目级build.gradle配置:
buildscript {
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
maven { url 'https://developer.huawei.com/repo/' }
}
}
module级build.gradle配置:
将聚合SDK的aar包放到项目libs目录中,然后在build.gradle中加入
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
权限配置
Android6.0以上需要动态申请相关权限,缺少部分权限可能会影响广告的加载、展示和收入
Manifest.permission.READ_PHONE_STATE
Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.ACCESS_COARSE_LOCATION
初始化SDK
为项目创建Application类,然后在onCreate()方法中初始化
// 声明为项目接入的广告商类型
val adProviderType = arrayOf(
AdProviderType.CSJ, // 穿山甲
AdProviderType.GDT, // 广点通(优量汇)
AdProviderType.KS, // 快手
AdProviderType.BAIDU, // 百度百青藤
AdProviderType.HUAWEI // 华为
)
//初始化SDK,appId和appKey由我们提供的代理商信息
AggAd.int(this, adProviderType, "appId", "appKey");
开屏广告(Splash)
详细示例参考demo中的SplashActivity
AggSplashHelper.loadAndShow(
activity = this,
container = adContainer, //展示开屏广告的容器View
listener = object : SplashListener {
override fun onStartRequest() {
addLog("\n开屏广告开始请求")
}
override fun onLoaded() {
addLog("开屏广告加载完成")
}
override fun onClicked() {
addLog("开屏广告被点击了")
}
override fun onExposured() {
addLog("开屏广告曝光了")
}
override fun onRequestFailed(failMsg: String?) {
addLog("开屏广告请求失败了:,$failMsg")
actionHome()
}
override fun onDismissed() {
addLog("开屏广告点了跳过或者倒计时结束")
actionHome()
}
})
横幅广告(Banner)
详细示例参考demo中的BannerActivity
AggBannerHelper.show(
activity = this,
container = adContainer,
listener = object : BannerListener {
override fun onStartRequest() {
addLog("\n开始请求了")
}
override fun onLoaded() {
addLog("请求到了")
}
override fun onRequestFailed(failMsg: String?) {
addLog("单个广告请求失败: $failMsg")
}
override fun onClicked() {
addLog("点击了")
}
override fun onExposured() {
addLog("曝光了")
}
override fun onClosed() {
addLog("关闭了")
}
})
在页面生命周期结束时要销毁广告实体,避免内存泄漏
override fun onDestroy() {
super.onDestroy()
//销毁,避免内存泄漏
adContainer?.removeAllViews()
AggBannerHelper.destroy()
}
插屏广告(Inter)
详细示例参考demo中的InterActivity
AggInterHelper.load(
this@InterActivity,
object : InterListener {
override fun onLoaded() {
super.onLoaded()
addLog("请求到了")
}
override fun onClicked() {
super.onClicked()
addLog("点击了")
}
override fun onExposured() {
super.onExposured()
addLog("曝光了")
}
override fun onClosed() {
super.onClosed()
addLog("关闭了")
}
override fun onCached() {
super.onCached()
addLog("缓存了")
// 广告展示方法可以在任意时间和位置调用,但必须在onCached被调用后
AggInterHelper.show()
}
override fun onStartRequest() {
super.onStartRequest()
addLog("\n开始请求了")
}
override fun onRequestFailed(failMsg: String?) {
super.onRequestFailed(failMsg)
addLog("广告请求失败:$failMsg")
}
})
在页面生命周期结束时要销毁广告实体,避免内存泄漏
override fun onDestroy() {
super.onDestroy()
AggInterHelper.destroy()
}
激励广告(Reward)
详细示例参考demo中的RewardActivity
AggRewardHelper.loadAndShow(
this@RewardActivity,
"10001", // 用户唯一标识,用于奖励发放
object : RewardListener {
override fun onStartRequest() {
//在开始请求之前会回调此方法,失败切换的情况会回调多次
addLog("\n开始请求")
}
override fun onRequestFailed(failMsg: String?) {
//请求失败的回调,失败切换的情况会回调多次
addLog("请求失败: $failMsg")
}
override fun onClicked() {
//点击广告的回调
addLog("点击了")
}
override fun onShow() {
//广告展示展示的回调
addLog("展示了")
}
override fun onLoaded() {
//广告请求成功的回调,每次请求只回调一次
addLog("请求到了")
}
override fun onVideoComplete() {
//视频播放完成的回调
addLog("视频播放完成")
}
override fun onCached() {
//视频缓存完成的回调
addLog("视频已缓存")
}
override fun onRewardVerify(
userId: String,
rewardAmount: Int
) {
//激励结果验证成功的回调
addLog("激励验证,用户Id:${userId},积分:${rewardAmount}")
}
override fun onClosed() {
//广告被关闭的回调
addLog("关闭了")
}
})
在页面生命周期结束时要销毁广告实体,避免内存泄漏
override fun onDestroy() {
AggRewardHelper.destroy()
super.onDestroy()
}
信息流广告
详细示例参考demo中的NativeExpressSimpleActivity(简单使用) 和 NativeExpressRecyclerViewActivity(信息流在RecyclerView中的使用)
加载广告
AggNativeExpressHelper.load(
this@NativeExpressSimpleActivity,
1, // 一次请求的数量
object : NativeExpressListener {
override fun onStartRequest() {
addLog("开始请求:信息流广告")
}
override fun onRequestFailed(failMsg: String?) {
addLog("信息流广告请求失败")
}
override fun onLoaded(adEntityList: List<NativeExpressAdEntity>) {
if (!adEntityList.isNullOrEmpty()) {
addLog("信息流广告加载成功")
mAdEntity = adEntityList[0]
}else{
addLog("信息流广告加载成功,但广告内容为空")
}
}
override fun onLoaded() {
}
override fun onClicked() {
addLog("信息流广告点击了")
}
override fun onExposured() {
addLog("信息流广告曝光了")
}
override fun onClosed() {
addLog("信息流广告关闭了")
}
})
展示广告
mAdEntity?.let { AggNativeExpressHelper.show(it,adContainer) }
销毁广告,避免内存泄漏
mAdEntity?.let { AggNativeExpressHelper.destroyAd(it) }
注:在RecyclerView列表中的复杂使用请移步NativeExpressRecyclerViewActivity参考