聚合广告SDK文档(Kotlin)

目录

项目配置

权限配置

初始化SDK

开屏广告(Splash)

横幅广告(Banner)

插屏广告(Inter)

激励广告(Reward)

信息流广告


项目配置

项目级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参考

猜你喜欢

转载自blog.csdn.net/u010926168/article/details/121290266
今日推荐