美文网首页
天意文档

天意文档

作者: 我要离开浪浪山 | 来源:发表于2021-08-02 10:58 被阅读0次

    一、广告配置

    1、初始化

    //application里oncreate
    AdvManager.init(applicationContext,应用名,穿山甲应用id,开屏广告保底代码位id,配置信息加载成功回调)
    }
    
    
    //在mainactivity里的oncreate方法里调用
    AdvManager.saveMainActivity(this)
    
    //在mainactivity里的ondestroy方法里调用
    AdvManager.destroyMainActivity()
    
    ps:广告预加载的时候需要传入activity对象,经测试,传入application的context也不影响广告展示,可优化
    
    
    //示例
    private fun initAdvertisement() {
          //InformationAdPreLoadHelper
         //新广告接入 应用名,穿山甲应用id,开屏广告保底代码位id        AdvManager.init(this,AppKeyUtils.AD_APPLICATION_NAME,AppKeyUtils.AD_PANGOLIN_ID,AppKeyUtils.AD_OPEN_SCREEN_MINIMUM_ID)
            AdvManager.setMistakeClickParms(HashMap<String,Float>().apply{
                put(AppKeyUtils.AD_ORIGINAL_ID_1,0.2f) //信息流
                put(AppKeyUtils.AD_PLUG_SCREEN_ID_1,0.1f) //插屏
                put(AppKeyUtils.AD_OPEN_SCREEN_ID_1,0f)  //开屏
                put(AppKeyUtils.AD_MOTIVATIONAL_VIDEO_ID_3,0f)  //新人红包
                put(AppKeyUtils.AD_MOTIVATIONAL_VIDEO_ID_2,0.05f)  //签到红包
                put(AppKeyUtils.AD_MOTIVATIONAL_VIDEO_ID_4,0.1f)  //提现
                put(AppKeyUtils.AD_MOTIVATIONAL_VIDEO_ID_1,0.05f)  //悬浮&天天
    
                put(AppKeyUtils.TW_YZT_ORIGINAL_UNITID_1,0.2f)  //应用外弹框
            })
        }
    

    2、api 误点击

    //误点击
    AdvManager.setMistakeClickParms({广告为id:误点击概率})
    ps:信息流没有内置关闭按钮,误点击功能需要在项目中植入
    
    //信息流误触实现
    private var expressView: View? = null
    AdvManager.showInformationAd(信息流广告位id,容器宽度,容器高度,信息流容器,object:OnAdListener{
      //在信息流的展示回调中实现该方法,保存expressView,用于后续误触
      override fun onAdExpressView(view: View) {
        super.onAdExpressView(view)
        expressView = view 
      }
    })
    
    业务关闭按钮.setOnClickListener(object : View.OnClickListener{
      private var flag = false 
      override fun onClick(v: View?){
        if (!flag && expressView != null && expressView is ViewGroup && MistakeClickUtil.checkInformationAdMistakeClick(信息流广告位id,expressView as ViewGroup)) {
          //误触了信息流  
          //误触的概率在setMistakeClickParms的时候配置
          flag = true
        }else{
          //没误触信息流
          关闭弹框等逻辑。。。。
        }
      }
    })
    
    

    二、使用:

    1、开屏

    //展示开屏广告,无预加载
    AdvManager.showSplashAd(广告位id,object:OnSplashAdListener{
      onAdDismiss(){}//广告播放时间结束时调用。
      onAdClicked(){}//Splash广告的点击回调
      onAdSkip(){}//点击跳过时回调
      onAdShow(){}//Splash广告的展示回调
      onAdLoadFail(){}//加载失败回调
    })
    
     //示例
     private fun openScreen() {
            //开屏广告
            AdvManager.showSplashAd(AppKeyUtils.AD_OPEN_SCREEN_ID_1, object : OnSplashAdListener {
                override fun onAdShow() {
                    super.onAdShow()
                    //Splash广告的展示回调
                    AppLogUtils.onAppMultipleLog(Constant.ADS_HOT)
                    Log.d(Tag, "=====onAdShow=====")
                }
    
                override fun onAdClick() {
                    super.onAdClick()
                    //Splash广告的点击回调
                    Log.d(Tag, "=====onAdDismiss=====")
                    TimeTools.refreshCurrentFiveseconds()
                    SkipToWeb()
                }
    
                override fun onAdDismiss() {
                    super.onAdDismiss()
                    //广告播放时间结束时调用。
                    Log.d(Tag, "=====onAdDismiss=====")
                    //进入主页面
                    TimeTools.refreshCurrentFiveseconds()
                    SkipToWeb()
                }
    
                override fun onAdLoadFail(error: String) {
                    super.onAdLoadFail(error)
                    //加载失败回调
                    Log.d(Tag, "onAdLoadFail=======onError=====${error}")
                    //进入主页面
                    TimeTools.refreshCurrentFiveseconds()
                    SkipToWeb()
                }
    
                override fun onAdSkip() {
                    super.onAdSkip()
                    //点击跳过时回调
                    Log.d(Tag, "=====onAdSkip=====")
                    //进入主页面
                    TimeTools.refreshCurrentFiveseconds()
                    SkipToWeb()
                }
            })
        }
    

    2、插屏

    //展示插屏广告,带预加载
    AdvManager.showInterstitialAd(广告位id,object:OnAdListener{
      onAdClose(){}//广告关闭时调用。
      onAdClicked(){}//广告的点击回调
      onAdShow(){}//广告的展示回调
    })
    
    //无预加载
    AdvManager.showInterstitialAdImediately((广告位id,object:OnAdListener{
      onAdClose(){}//广告关闭时调用。
      onAdClicked(){}//广告的点击回调
      onAdShow(){}//广告的展示回调
      onAdLoadSuccess(){}
      onAdLoadFail(){}
    )
    
    //示例
      fun showChaping(adid: String, callback: ((Boolean) -> Unit)?) {
                if (!ApplicationHelp.isShowAd) {
                    callback?.invoke(false)
                    return
                }
                GlobalScope.launch(Dispatchers.Main) {
                    AdvManager.showInterstitialAd(adid,object : OnAdListener{
                        override fun onAdClose() {
                            super.onAdClose()
                            callback?.invoke(false)
                        }
    
                        override fun onAdShow() {
                            super.onAdShow()
                            callback?.invoke(true)
                        }
    
                        override fun onAdClick() {
                            super.onAdClick()
                        }
    
                        override fun onAdLoadFail(error: String) {
                            super.onAdLoadFail(error)
                            callback?.invoke(false)
                        }
                    })
                }
            }
    

    3、信息流

    //展示信息流广告,带预加载,自适应容器高度(注意:宽度种类不要太多,会影响展示率)
    //容器高度写0为自适应高度渲染
    AdvManager.showInformationAd(广告位id,容器宽度,容器高度,信息流容器,object:OnAdListener{
      onAdClicked(){}//广告的点击回调
      onAdShow(){}//广告的展示回调
      onAdRenderFail(){}//渲染失败
    })
    
    //无预加载,自适应容器宽度(可自己指定广告显示的宽高)
    AdvManager.showInformationAdImediately(广告位id,信息流容器,object:OnAdListener{
      onAdLoadSuccess(){}
      onAdLoadFail(){}//广告加载失败
      onAdClicked(){}//广告的点击回调
      onAdShow(){}//Splash广告的展示回调
      onAdRenderFail(){}//渲染失败
    })
    
    

    1、无预加载信息流广告示例

    //1、调用 信息流广告 ,无预加载
       var view=LayoutInflater.from(context).inflate(R.layout.dialog_manfen_hongbao,null)
            var dialog_xiagua=view.findViewById<FrameLayout>(R.id.dialog_xiagua)
            var scale = context.getResources().getDisplayMetrics().density
            var width=(DensityUtil.getScreenWidthPx(context)/scale).toInt()
            AdvertUtils.showxinxiImediatelyT(dialog_xiagua,AppKeyUtils.AD_ORIGINAL_ID_1,object : OnAdListener{
                override fun onAdShow() {
                    super.onAdShow()
                    AppLogUtils.onAppMultipleLog(Constant.ADS_DRAW_30OUTCG)
                    dialog_xiagua.background=context.getDrawable(R.drawable.white)
                }
    
            },width,260)
    
    //2、 信息流广告被调用者,无预加载
      fun showxinxiImediatelyT(viewGroup: ViewGroup,id: String, listener: OnAdListener?=null,widthdp: Int,height:Int) {
                if (!ApplicationHelp.isAllShowAd) {
                    listener?.onAdShow()
                    return
                }
                AdvManager.showInformationAdImediately(id, viewGroup ,listener,widthdp,height)
            }
    

    2、无预加载信息流广告示例

      //1、调用
      AdvertUtils.AdInformationFlowShow(AdvertUtils.getWidthScreenReduce(100),guanggao,object :
                    OnInformationAdListener {
                    override fun onAdExpressView(view: View) {
                        super.onAdExpressView(view)
                        expressView = view
                        AppLogUtils.onAppMultipleLog(Constant.ADS_DRAW_HANG)
                    }
                })
     //2、被调用
     fun AdInformationFlowShow( widthdp: Int, viewGroup: ViewGroup, listener: OnAdListener?=null) {
                if (!ApplicationHelp.isAllShowAd) {
                    listener?.onAdShow()
                    return
                }
                AdvManager.showInformationAd(AppKeyUtils.AD_ORIGINAL_ID_1,widthdp,viewGroup,listener)
            }
    
    
    

    4、激励视频

    //展示激励视频广告,带预加载
    AdvManager.showRewardVideo(广告位id,object:OnRewardAdListener{
      onVideoComplete(){}//广告播放时间结束时调用。
      onAdClicked(){}//广告的点击回调
      onVideoSkip(){}//视频点击跳过时回调
      onAdShow(){}//广告的展示回调
      onAdRenderFail(){}//视频播放失败
      onAdClose(){}//广告关闭
    })
    
    //无预加载
    AdvManager.showInterstitialAdImediately((广告位id,object:OnRewardAdListener{
      onAdLoadSuccess(){}
      onVideoCached(){}
      onAdLoadFail(){}
      onVideoComplete(){}//广告播放时间结束时调用。
      onAdClicked(){}//广告的点击回调
      onVideoSkip(){}//视频点击跳过时回调
      onAdShow(){}//广告的展示回调
      onAdRenderFail(){}//视频播放失败
      onAdClose(){}//广告关闭
    )
    
    

    1、不带预加载示例:

          fun showRewardVideoImediately(slotId: String, result:((Boolean)-> Unit)?) {
                TimeOut.getInstance().isShowCompleted=false
                if (!ApplicationHelp.isAllShowAd) {
                    result?.invoke(true)
                    return
                }
                AdvManager.showRewardVideoImediately(slotId, object : OnRewardAdListener {
                    override fun onAdLoadFail(error: String) {
                        super.onAdLoadFail(error)
                        result?.invoke(false)
                        TimeOut.getInstance().isShowCompleted=true
                    }
    
                    /**
                     * 视频播放失败的回调 - Mintegral GDT Admob广告不存在该回调
                     */
                    override fun onAdRenderFail(error: String) {
                        super.onAdRenderFail(error)
                        result?.invoke(false)
                        TimeOut.getInstance().isShowCompleted=true
                    }
    
                    /**
                     * 广告关闭的回调
                     */
                    override fun onAdClose() {
                        super.onAdClose()
                        result?.invoke(true)
                        TimeOut.getInstance().isShowCompleted=true
                    }
                })
            }
    
       
    

    2、带预加载示例:

         /**
             * 展示激励视频,带预加载
             */
            fun AdEncourageShow(mContext: Context, slotId: String, result:((Boolean)-> Unit)?) {
    
                Log.d("LUO","#####====加载激励视频====")
                TimeOut.getInstance().isShowCompleted=false
                if (!ApplicationHelp.isAllShowAd) {
                    result?.invoke(true)
                    return
                }
                LoadingUtils.ShowLoading(mContext)
                AdvManager.showRewardVideo(slotId, object : OnRewardAdListener {
    //                private var isComplete: Boolean? = null
                    /**
                     * 视频播放完毕的回调 Admob广告不存在该回调
                     */
                    override fun onVideoComplete() {
                        super.onVideoComplete()
    //                    isComplete = true
    //                    result?.invoke(true)
                        Log.d("LUO","#####====加载激励视频====")
                    }
    
                    /**
                     * 视频播放失败的回调 - Mintegral GDT Admob广告不存在该回调
                     */
                    override fun onAdRenderFail(error: String) {
                        super.onAdRenderFail(error)
                        Log.d("LUO","#####====onAdRenderFail===="+error)
                        LoadingUtils.HideLoading()
                        result?.invoke(false)
                        TimeOut.getInstance().isShowCompleted=true
                    }
    
                    /**
                     * 广告关闭的回调
                     */
                    override fun onAdClose() {
                        super.onAdClose()
                        Log.d("LUO","#####====onAdClose====")
                        LoadingUtils.HideLoading()
                        result?.invoke(true)
                        TimeOut.getInstance().isShowCompleted=true
                    }
    
                    /**
                     * - Mintegral GDT Admob广告不存在该回调
                     */
                    override fun onVideoSkip() {
                        super.onVideoSkip()
                        Log.d("LUO","#####====onVideoSkip====")
    //                    isComplete = false
                    }
    
                    /**
                     * 广告的展示回调 每个广告仅回调一次
                     */
                    override fun onAdShow() {
                        super.onAdShow()
                        Log.d("LUO","#####====onAdShow====")
                        LoadingUtils.HideLoading()
                    }
    
                    /**
                     * 注意Admob的激励视频不会回调该方法
                     */
                    override fun onAdClick() {
                        Log.d("LUO","#####====onAdClick====")
                        super.onAdClick()
                    }
                })
            }
    

    三、附录

    无预加载信息流广告实现类:InformationAdHelper 
    无预加载插屏广告实现类:InterstitialAdHelper
    无预加载激励视频广告实现类:RewardVideoAdHelper
    无预加载开屏广告实现类:SplashAdHelper
    
    预加载信息流广告实现类:InformationAdPreLoadHelper
    预加载插屏广告实现类:InterstitialAdPreLoadHelper
    预加载激励视频广告实现类:RewardVideoAdPreLoadHelper
    
    

    相关文章

      网友评论

          本文标题:天意文档

          本文链接:https://www.haomeiwen.com/subject/saidvltx.html