? {
return null
}
/**
* 是否允许SDK主动获取ANDROID_ID
*
* 4600新增
*
* @return 默认true 允许 , false 不允许
*/
override fun isCanUseAndroidId(): Boolean {
return false
}
/**
* 当isCanUsePhoneState=false时,可传⼊android_id信息,sdk使⽤您传⼊的android_id
*/
override fun getAndroidId(): String {
return Settings.System.getString(contentResolver, Settings.Secure.ANDROID_ID)
}
/**
* 是否允许SDK主动使用ACCESS_WIFI_STATE权限
*
* @return true可以使用,false禁止使用。默认为true
*/
override fun isCanUseWifiState(): Boolean {
return false
}
/**
* 是否允许SDK主动使用WRITE_EXTERNAL_STORAGE权限
*
* @return true可以使用,false禁止使用。默认为true
*/
override fun isCanUseWriteExternal(): Boolean {
return false
}
/**
* 是否允许SDK主动使⽤mac_address
*
* @return true可以使⽤,false禁⽌使⽤。默认为true
*/
override fun isCanUseMacAddress(): Boolean {
return false
}
/**
* 当isCanUseMacAddress=false时,可传⼊mac地址信息,sdk使⽤您传⼊的mac地址信息(快手)
* 没有canUseMacAddress状态(穿山甲)
*/
override fun getMacAddress(): String {
return ""
}
/**
* 是否允许SDK主动使⽤ACCESS_NETWORK_STATE权限
*
* @return true可以使⽤,false禁⽌使⽤。默认为true
*/
override fun isCanUseNetworkState(): Boolean {
return false
}
/**
* 是否允许SDK主动读取app安装列表
*
* @return true可以使⽤,false禁⽌使⽤。默认为true
*/
override fun isCanReadInstalledPackages(): Boolean {
return false
}
/**
* 当canReadInstalledPackages=false时,可传⼊package list信息,sdk使⽤您传⼊的 package list
*/
override fun getInstalledPackages(): MutableList? {
return null
}
/**
* 是否允许获取imsi
*
* @return true可以使⽤,false禁⽌使⽤。默认为true
*/
override fun isCanUseImsi(): Boolean {
return false
}
/**
* 穿山甲使用,是否允许SDK在申明和授权了的情况下使用录音权限
*
* @return true可以使⽤,false禁⽌使⽤。默认为true
*/
override fun isCanUsePermissionRecordAudio(): Boolean {
return false
}
})
.setAdAgentListener(object : AdAgentListener {
/**
* 概率为不显示广告/没有广告数据
*/
override fun onNotShow(page: String?, location: String?) {
Log.e("ZTAD", "AdAgentListener onNotShow: page->${page}, location->${location}")
}
/**
* 广告显示失败(未开始请求)
*
* @param code 错误码
* @param msg 错误信息
*/
override fun onFail(
page: String?,
location: String?,
code: Int,
msg: String?
) {
Log.e("ZTAD", "AdAgentListener onFail: page->${page}, location->${location}")
}
/**
* 开始加载
*
* @param type 类型
*/
override fun onLoadStart(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onLoadStart: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告加载成功
*
* @param type 类型
*/
override fun onLoadSuccess(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onLoadSuccess: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告加载失败
*
* @param type 类型
* @param code 错误码
* @param msg 错误信息
*/
override fun onLoadFail(
type: AdType,
data: AdData,
code: Int,
msg: String?
) {
Log.e("ZTAD", "AdAgentListener onLoadFail: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告显示
*
* @param type 类型
*/
override fun onShow(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onShow: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告曝光
*
* @param type 类型
*/
override fun onExposure(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onExposure: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告渲染失败
*
* @param type 类型
* @param code 错误码
* @param msg 错误信息
*/
override fun onRenderFail(
type: AdType,
data: AdData,
code: Int,
msg: String?
) {
Log.e("ZTAD", "AdAgentListener onRenderFail: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告被点击
*
* @param type 类型
*/
override fun onClicked(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onClicked: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 请求时间
*
* @param type 类型
* @param time 请求时间
*/
override fun onLoadTime(
type: AdType,
data: AdData,
time: Long
) {
Log.e("ZTAD", "AdAgentListener onLoadTime: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告关闭
*
* @param type 类型
*/
override fun onAdClose(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onAdClose: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 广告跳过、视频广告跳过回调
*
* @param type 类型
*/
override fun onSkip(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onSkip: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 激励视频触发激励(观看视频大于一定时长或者视频播放完毕)
*
* @param type
*/
override fun onReward(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onReward: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 激励视频播放完毕
*
* @param type
*/
override fun onVideoComplete(
type: AdType,
data: AdData
) {
Log.e("ZTAD", "AdAgentListener onVideoComplete: type->${type}, page->${data.adPage}, location->${data.adLocation}")
}
/**
* 请求超时
*/
override fun onOverTime(page: String?, location: String?) {
Log.e("ZTAD", "AdAgentListener onOverTime: page->${page}, location->${location}")
}
})
.setShowDialog(true) // 是否显示自定义下载弹窗
.init(this);
```
### 拉取广告配置
```kotlin
// 建议在开屏页面调用(sdk初始化时,sdk内部会调用)
ZTSDK.refreshConfig()
```
### 开屏广告
```kotlin
val width = DensityUtil.getWidth(this@SplashActivity)
val height = DensityUtil.getHeight(this@SplashActivity)
val viewWidth = width
val viewHeight = height - DensityUtil.dp2px(this@SplashActivity, 80f)
val params = PlacementParams()
.setPage("KP")
.setLocation("KP")
.setContainer(binding.splashLayout)
.setSingle(false)
.setTimeout(5 * 1000)
.setViewAcceptedSize(
DensityUtil.px2dp(this@SplashActivity, viewWidth.toFloat()),
DensityUtil.px2dp(this@SplashActivity, viewHeight.toFloat())
)
splashAd = SplashAd(params)
splashAd?.setAdShowListener(object : SplashAdListener {
override fun onAdClicked() {
Log.e("ZTAD", "onAdClicked:")
mCanJump = true
}
override fun onAdShow() {
Log.e("ZTAD", "onAdShow:")
}
override fun onAdExposure() {
Log.e("ZTAD", "onAdExposure:")
}
override fun onAdSkip() {
Log.e("ZTAD", "onAdSkip:")
goToActivity()
}
override fun onAdClose() {
Log.e("ZTAD", "onAdClose:")
goToActivity()
}
override fun onAdTick(time: Int) {
Log.e("ZTAD", "onAdTick:time->$time")
}
override fun onRenderFail(code: Int, msg: String) {
Log.e("ZTAD", "onRenderFail:")
goToActivity()
}
})?.setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
}
override fun onFail(code: Int, msg: String) {
goToActivity()
}
})
?.loadAd(this@SplashActivity)
```
### 浮窗广告
```kotlin
val params = PlacementParams()
.setPage("SY")
.setLocation("FCGG")
.setTimeout(10000)
FloatAd(params)
.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {
Log.e("ZTAD", "FloatAd onAdClicked: ")
}
override fun onAdShow() {
Log.e("ZTAD", "FloatAd onAdShow: ")
}
override fun onAdExposure() {
Log.e("ZTAD", "FloatAd onAdExposure: ")
}
override fun onAdClose() {
Log.e("ZTAD", "FloatAd onAdClose: ")
}
override fun onRenderFail(code: Int, msg: String) {
Log.e("ZTAD", "FloatAd onRenderFail: ")
}
})
.setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
}
override fun onFail(code: Int, msg: String) {
}
})
.loadAd(this)
```
### 激励视频
```kotlin
val params = PlacementParams()
.setPage("TZHD")
.setLocation("skipTask1")
RewardVideoAd(params)
.setAdShowListener(object : RewardVideoAdListener {
override fun onReward() {
Log.e("ZTAD", "onReward: ")
}
override fun onAdClicked() {
Log.e("ZTAD", "onAdClicked: ")
}
override fun onVideoComplete() {
Log.e("ZTAD", "onVideoComplete: ")
}
override fun onAdShow() {
Log.e("ZTAD", "onAdShow: ")
}
override fun onAdExposure() {
Log.e("ZTAD", "onAdExposure: ")
}
override fun onAdClose() {
Log.e("ZTAD", "onAdClose: ")
}
override fun onRenderFail(code: Int, msg: String) {
Log.e("ZTAD", "onRenderFail: ")
}
}).setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
Log.e("ZTAD", "onSuccess: ")
}
override fun onFail(code: Int, msg: String) {
Log.e("ZTAD", "onFail: ")
}
}).loadAd(this)
```
### 抖音商城广告
```kotlin
val params = PlacementParams()
.setPage("FCJZDL")
.setLocation("fc_mf_04")
.setTimeout(5 * 1000)
val nativeAd = NativeAd(params)
// 商城未领取奖励时是否拦截提示
nativeAd.setShopInterceptionFinish(true)
// 商城浏览时长(单位:秒)及奖励数量
nativeAd.setShopRewardData(60, 1)
nativeAd.setShopAdListener(object : ShopAdListener{
/**
* 获取自定义View
*
* @param inflater
* @param container
* @return
*/
override fun getView(inflater: LayoutInflater, container: ViewGroup): View? {
return null
}
/**
* 触发激励
*
* @param gold 数量
*/
override fun onReward(gold: Int) {
}
/**
* 浏览时间完成
*/
override fun onBrowseCompleted() {
}
/**
* 滑动到顶部
*/
override fun onScrollToTop() {
}
/**
* 滑动到底部
*/
override fun onScrollToBottom() {
}
/**
* 页面关闭拦截
*
* @param activity
* @return true 拦截,false 不拦截
*/
override fun onFinishInterception(activity: FragmentActivity): Boolean {
return false
}
})
nativeAd.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {
}
override fun onAdShow() {
}
override fun onAdExposure() {
}
override fun onRenderFail(code: Int, msg: String) {
}
override fun onAdClose() {
}
}).setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
Log.e("ZTAD", "onSuccess: ")
}
override fun onFail(code: Int, msg: String) {
Log.e("ZTAD", "onFail: ")
}
}).loadAd(this@MainActivity)
```
### 任务中心自定义广告
```kotlin
val params = PlacementParams()
.setPage("FCJZDL")
.setLocation("fc_mf_04")
.setTimeout(5 * 1000)
val nativeAd = NativeCustomAd(params)
nativeAd.setAdFeedCallback(object : AdFeedCallback {
override fun onRender(
ad: NativeCustomAd,
data: NativeAdData
) {
// 自定义渲染数据
val title = (data.gameplay ?: "") + (data.appName ?: "")
val icon = data.icon
ad.setAdContainer(viewGroup) // 设置广告父布局View
.setClickViewList(list) // 设置可以被点击的View
.setCreativeViewList(list) // 设置可以被点击的View
.setTaskBrowseTime(10) // 任务广告浏览时间(单位:秒)
}
override fun onReward() {
// 奖励发放
}
})
nativeAd.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {
}
override fun onAdShow() {
}
override fun onAdExposure() {
}
override fun onRenderFail(code: Int, msg: String) {
}
override fun onAdClose() {
}
}).setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
Log.e("ZTAD", "onSuccess: ")
}
override fun onFail(code: Int, msg: String) {
Log.e("ZTAD", "onFail: ")
}
}).loadAd(this@MainActivity)
// 必须实现以下方法
override fun onResume() {
super.onResume()
nativeAd.resume()
}
override fun onPause() {
super.onPause()
nativeAd.pause()
}
```
### 信息流广告(模板渲染)
```kotlin
val width = dp2px(232f).toInt()
val dpWidth = 232f
val params = PlacementParams()
.setPage("FCJZDL")
.setLocation("fc_mf_04")
.setContainer(binding.nativeContainer)
.setViewAcceptedSize(dpWidth, dpWidth * 2 / 3)
.setViewSize(width, width * 2 / 3)
.setTimeout(5 * 1000)
val nativeAd = NativeAd(params)
nativeAd.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {
}
override fun onAdShow() {
}
override fun onAdExposure() {
}
override fun onRenderFail(code: Int, msg: String) {
}
override fun onAdClose() {
}
}).setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
Log.e("ZTAD", "onSuccess: ")
}
override fun onFail(code: Int, msg: String) {
Log.e("ZTAD", "onFail: ")
}
}).loadAd(this@MainActivity)
// 必须实现以下方法
override fun onDestroy() {
super.onDestroy()
nativeAd?.destroy()
}
```
### 信息流广告(自渲染)
```kotlin
val width = dp2px(232f).toInt()
val dpWidth = 232f
val params = PlacementParams()
.setPage("FCJZDL")
.setLocation("fc_mf_04")
.setContainer(binding.nativeContainer)
.setViewAcceptedSize(dpWidth, dpWidth * 2 / 3)
.setViewSize(width, width * 2 / 3)
.setTimeout(5 * 1000)
val nativeAd = NativeCustomAd(params)
nativeAd.setAdFeedCallback(object : AdFeedCallback {
override fun onRender(
ad: NativeCustomAd,
data: NativeAdData
) {
// 自定义渲染数据
}
})
nativeAd.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {
}
override fun onAdShow() {
}
override fun onAdExposure() {
}
override fun onRenderFail(code: Int, msg: String) {
}
override fun onAdClose() {
}
}).setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
Log.e("ZTAD", "onSuccess: ")
}
override fun onFail(code: Int, msg: String) {
Log.e("ZTAD", "onFail: ")
}
}).loadAd(this@MainActivity)
// 必须实现以下方法
override fun onDestroy() {
super.onDestroy()
nativeAd?.destroy()
}
```
### 插屏广告
```kotlin
val params = PlacementParams()
.setPage("SY")
.setLocation("CP")
.setTimeout(1000 * 10)
val ad = InteractionAd(params)
ad.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {
}
override fun onAdShow() {
}
override fun onAdExposure() {
}
override fun onRenderFail(code: Int, msg: String) {
}
override fun onAdClose() {
}
})
ad.setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
}
override fun onFail(code: Int, msg: String) {
}
})
ad.loadAd(this)
```
### Banner广告
```kotlin
val width = getWidth(this@MainActivity) - dp2px(20f).toInt()
val dpWidth = DemoApplication.screenWidthDp - 20f
val params = PlacementParams()
.setPage("GRZX")
.setLocation("TB")
.setContainer(binding.bannerContainer)
.setCloseEnable(false)
.setViewAcceptedSize(dpWidth, dpWidth / 4)
.setViewSize(width, width / 4)
bannerAd = BannerAd(params)
bannerAd?.setAdShowListener(object : AdShowListener {
override fun onAdClicked() {}
override fun onAdShow() {}
override fun onAdExposure() {}
override fun onRenderFail(code: Int, msg: String) {}
override fun onAdClose() {
if (this@MainActivity.isFinishing) return
binding.bannerContainer.visibility = View.GONE
}
})?.setAdLoadListener(object : AdLoadListener {
override fun onSuccess() {
Log.e("ZTAD", "onSuccess: ")
}
override fun onFail(code: Int, msg: String) {
Log.e("ZTAD", "onFail: ")
}
})?.loadAd(this@MainActivity)
override fun onDestroy() {
super.onDestroy()
// 页面销毁时需要销毁
bannerAd?.destroy()
}
```