5 Star 29 Fork 9

Matthew_Chen / TogetherAd

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
SplashProActivity.kt 6.85 KB
一键复制 编辑 原始数据 按行查看 历史
Matthew_Chen 提交于 2021-06-30 18:27 . 更新SDK
package com.ifmvo.togetherad.demo.splash
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import com.ifmvo.togetherad.core.custom.splashSkip.SplashSkipViewSimple2
import com.ifmvo.togetherad.core.helper.AdHelperSplashPro
import com.ifmvo.togetherad.core.listener.SplashListener
import com.ifmvo.togetherad.core.utils.ScreenUtil
import com.ifmvo.togetherad.core.utils.dp
import com.ifmvo.togetherad.core.utils.loge
import com.ifmvo.togetherad.core.utils.logi
import com.ifmvo.togetherad.csj.provider.CsjProvider
import com.ifmvo.togetherad.demo.R
import com.ifmvo.togetherad.demo.app.AdProviderType
import com.ifmvo.togetherad.demo.app.TogetherAdAlias
import com.ifmvo.togetherad.gdt.provider.GdtProvider
import kotlinx.android.synthetic.main.activity_splash_pro.*
/**
* 开屏广告使用示例
*
* Created by Matthew Chen on 2020-04-17.
*/
class SplashProActivity : AppCompatActivity() {
private val tag = "SplashProActivity"
private val adHelperSplashPro by lazy {
/**
* 使用 Map<String, Int> 配置广告商 权重,通俗的讲就是 随机请求的概率占比
*/
val ratioMapSplash = linkedMapOf(
AdProviderType.GDT.type to 1,
AdProviderType.CSJ.type to 1
)
/**
* activity: 必传。这里不是 Context,因为广点通必须传 Activity,所以统一传 Activity。
* alias: 必传。广告位的别名。初始化的时候是根据别名设置的广告ID,所以这里TogetherAd会根据别名查找对应的广告位ID。
* ratioMap: 非必传。广告商的权重。可以不传或传null,空的情况 TogetherAd 会自动使用初始化时 TogetherAd.setPublicProviderRatio 设置的全局通用权重。
*/
AdHelperSplashPro(activity = this, alias = TogetherAdAlias.AD_SPLASH/*, ratioMap = ratioMapSplash*/)
}
companion object {
fun action(context: Context) {
context.startActivity(Intent(context, SplashProActivity::class.java))
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash_pro)
btnLoad.setOnClickListener {
//开始请求开屏广告
requestSplashAd()
}
btnShow.setOnClickListener {
//展示广告
showSplashAd()
}
}
/**
* 请求开屏广告
*/
private fun requestSplashAd() {
/**
* 设置 开屏广告 自定义跳过按钮
* TogetherAd 提供了两个简单的实例模板,同时只能设置一个,如果设置多个后面的生效
*/
CsjProvider.Splash.customSkipView = SplashSkipViewSimple2()//穿山甲
//CsjProvider.Splash.customSkipView = SplashSkipViewSimple1()
/**
* 给 穿山甲 设置可接受的图片尺寸,避免图片变形
* 一般设置容器的宽高即可
*/
CsjProvider.Splash.setImageAcceptedSize(ScreenUtil.getDisplayMetricsWidth(this), ScreenUtil.getDisplayMetricsHeight(this) - 100f.dp.toInt())
/**
* 设置 穿山甲 开屏广告超时时间
* fetchDelay 参数,设置开屏广告从请求到展示所花的最大时长(并不是指广告曝光时长),
* 如果不设置,默认值为 4000ms
*/
CsjProvider.Splash.maxFetchDelay = 4000
/**
* 设置 优量汇 开屏广告超时时间
* 取值范围为[3000, 5000]ms。
* 如果不设置,会使用默认值 4000ms
*/
GdtProvider.Splash.maxFetchDelay = 4000
/**
* listener: 非必传。如果你不需要监听结果可以不传或传空。各个回调方法也可以选择性添加
*/
adHelperSplashPro.loadOnly(listener = object : SplashListener {
override fun onAdStartRequest(providerType: String) {
//在开始请求之前会回调此方法,失败切换的情况会回调多次
addLog("\n开屏广告开始请求,$providerType")
"onAdStartRequest: $providerType".logi(tag)
}
override fun onAdLoaded(providerType: String) {
btnShow.isEnabled = true
//广告请求成功的回调,每次请求只回调一次
addLog("开屏广告请求好了,$providerType")
"onAdLoaded: $providerType".logi(tag)
}
override fun onAdClicked(providerType: String) {
//点击广告的回调
addLog("开屏广告被点击了,$providerType")
"onAdClicked: $providerType".logi(tag)
}
override fun onAdExposure(providerType: String) {
//广告展示曝光的回调
addLog("开屏广告曝光了,$providerType")
"onAdExposure: $providerType".logi(tag)
}
override fun onAdFailed(providerType: String, failedMsg: String?) {
//请求失败的回调,失败切换的情况会回调多次
addLog("开屏广告单个提供商请求失败了,$failedMsg, $providerType")
"onAdFailed: $providerType: $failedMsg".loge(tag)
}
override fun onAdFailedAll(failedMsg: String?) {
//所有配置的广告商都请求失败了,只有在全部失败之后会回调一次
addLog("全部请求失败了")
"onAdFailedAll".loge(tag)
actionHome(1000)
}
override fun onAdDismissed(providerType: String) {
//开屏广告消失了,点了跳过按钮或者倒计时结束之后会回调一次
//在这里跳转主界面,并关闭 Splash
addLog("开屏广告点了跳过或者倒计时结束, $providerType")
"onAdDismissed: $providerType".logi(tag)
actionHome(0)
}
})
//回调中的 providerType 是广告商类型
}
/**
* 展示开屏广告
*/
private fun showSplashAd() {
//展示广告并返回是否展示成功
val showAdIsSuccess = adHelperSplashPro.showAd(adContainer)
//如果没有展示成功就直接跳走
if (!showAdIsSuccess) {
actionHome(1000)
}
}
//不能手动返回
override fun onBackPressed() {}
private fun actionHome(delayMillis: Long) {
adContainer.postDelayed({
//在这里跳转到 Home 主界面
finish()
}, delayMillis)
}
private var logStr = "日志: \n"
private fun addLog(content: String?) {
logStr = logStr + content + "\n"
log.text = logStr
info.post { info.fullScroll(View.FOCUS_DOWN) }
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Kotlin
1
https://gitee.com/Matthew_Chen/TogetherAd.git
git@gitee.com:Matthew_Chen/TogetherAd.git
Matthew_Chen
TogetherAd
TogetherAd
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891