Skip to content

Latest commit

 

History

History
137 lines (109 loc) · 6.1 KB

native.md

File metadata and controls

137 lines (109 loc) · 6.1 KB

原生自渲染广告

原生广告自渲染方式支持开发者自由拼合素材,最大程度的满足开发需求;与原生广告(模板方式)相比,自渲染方式更加自由灵活,开发者可以使用其为开发者的应用打造自定义的布局样式

—— 引自广点通文档

声明并初始化

class NativeSimpleActivity : AppCompatActivity() {
    //声明
    private var adHelperNative: AdHelperNativePro? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_flow_simple)

        //使用 Map<String, Int> 配置广告商 权重,通俗的讲就是 随机请求的概率占比
        val ratioMapNativeSimple = linkedMapOf(
                AdProviderType.GDT.type to 3,
                AdProviderType.CSJ.type to 1,
                AdProviderType.BAIDU.type to 1
        )

        //初始化  maxCount: 返回广告的最大个数 ( 由于各个广告提供商返回的广告数量不等,所以只能控制返回广告的最大数量。例:maxCount = 4,返回的 1 ≤ List.size ≤ 4 )
        adHelperNative = AdHelperNativePro(activity = this, alias = TogetherAdAlias.AD_NATIVE_SIMPLE, maxCount = 1/*, ratioMap = ratioMapNativeSimple*/)
    }
}

请求

/**
 * 请求广告
 */
private fun requestAd() {
    //--------------------------------------------------------------------------------------
    //  ( 必须设置 )如果需要使用穿山甲的原生广告,必须在请求之前设置类型。( 没用到穿山甲的请忽略 )
    //  设置方式:CsjProvider.Native.nativeAdType = AdSlot.TYPE_XXX(类型和你的广告位ID一致)。
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_FEED
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_INTERACTION_AD
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_BANNER
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_CACHED_SPLASH
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_DRAW_FEED
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_FULL_SCREEN_VIDEO
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_REWARD_VIDEO
    //  CsjProvider.Native.nativeAdType = AdSlot.TYPE_SPLASH
    //--------------------------------------------------------------------------------------
    CsjProvider.Native.nativeAdType = AdSlot.TYPE_FEED

    //设置 穿山甲 图片可接受的尺寸 ( 建议设置,默认是 1080,607.5 )
    //CsjProvider.Native.setImageAcceptedSize(ScreenUtil.getDisplayMetricsWidth(this), ScreenUtil.getDisplayMetricsWidth(this) * 9 / 16)

    //指定普链广告点击后用于展示落地页的浏览器类型,可选项包括:InnerBrowser(APP 内置浏览器),Sys(系统浏览器),Default(默认,SDK 按照默认逻辑选择)
    // ( 非必须设置,默认是:BrowserType.Default )
    //GdtProvider.Native.browserType = BrowserType.Default

    //指定点击 APP 广告后是否展示二次确认,可选项包括 Default(wifi 不展示,非 wifi 展示),NoConfirm(所有情况不展示)
    // ( 非必须设置,默认是:DownAPPConfirmPolicy.Default )
    //GdtProvider.Native.downAPPConfirmPolicy = DownAPPConfirmPolicy.Default

    //设置返回视频广告的最大视频时长(闭区间,可单独设置),单位:秒,合法输入为:5<=maxVideoDuration<=60. 此设置会影响广告填充,请谨慎设置
    // ( 非必须设置,默认是:60 )
    //GdtProvider.Native.maxVideoDuration = 60

    //设置返回视频广告的最小视频时长(闭区间,可单独设置),单位:秒 此设置会影响广告填充,请谨慎设置
    // ( 非必须设置,默认是:5 )
    //GdtProvider.Native.minVideoDuration = 5

    //设置本次拉取的视频广告,从用户角度看到的视频播放策略;
    // 可选项包括自VideoOption.VideoPlayPolicy.AUTO(在用户看来,视频广告是自动播放的)和VideoOption.VideoPlayPolicy.MANUAL(在用户看来,视频广告是手动播放的);
    // 如果广告位支持视频,强烈建议调用此接口设置视频广告的播放策略,有助于提高eCPM值;如果广告位不支持视频,忽略本接口
    // ( 默认是:VideoOption.VideoPlayPolicy.AUTO )
    //GdtProvider.Native.videoPlayPolicy = VideoOption.VideoPlayPolicy.AUTO

    adHelperNative?.getList(listener = object : NativeListener {
        override fun onAdStartRequest(providerType: String) {
            //在开始请求之前会回调此方法,失败切换的情况会回调多次
        }

        override fun onAdLoaded(providerType: String, adList: List<Any>) {
            //广告请求成功的回调,每次请求只回调一次
        }

        override fun onAdFailed(providerType: String, failedMsg: String?) {
            //请求失败的回调,失败切换的情况会回调多次
        }

        override fun onAdFailedAll() {
            //所有配置的广告商都请求失败了,只有在全部失败之后会回调一次
        }
    })
}

展示

/**
 * 展示广告
 */
private fun showAd(adObject: Any) {
    AdHelperNativePro.show(adObject = adObject, container = adContainer, nativeTemplate = NativeTemplateSimple1(), listener = object : NativeViewListener {
        override fun onAdExposed(providerType: String) {
            //每次曝光就会回调这里一次
        }

        override fun onAdClicked(providerType: String) {
            //每次点击就会回调这里一次
        }
    })
}

处理广告的生命周期

override fun onResume() {
    super.onResume()
    AdHelperNativePro.resumeAd(adObject)
}

override fun onPause() {
    super.onPause()
    AdHelperNativePro.pauseAd(adObject)
}

override fun onDestroy() {
    super.onDestroy()
    AdHelperNativePro.destroyAd(adObject)
}

详情可查看 Demo 中 原生自渲染广告的简单用法示例代码

详情可查看 Demo 中 原生自渲染广告在RecyclerView中使用示例代码