Commit c15babcb authored by jyx's avatar jyx

更新gromoreSDK,更新短剧SDK

parent 73ab8f8c
......@@ -210,18 +210,10 @@ dependencies {
// umeng 接入
// 穿山甲短剧
implementation("com.pangle.cn:pangrowth-sdk:3.9.0.2") {
exclude group: 'com.pangle.cn', module: 'pangrowth-game-sdk'
exclude group: 'com.pangle.cn', module: 'pangrowth-novel-sdk'
exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-sdk'
exclude group: 'com.pangle.cn', module: 'partner-luckycat-api-sdk'
exclude group: 'com.pangle.cn', module: 'pangrowth-reward-sdk'
exclude group: 'com.pangle.cn', module: 'partner-live-sdk'
exclude group: 'com.tencent.mm.opensdk', module: 'wechat-sdk-android'
}
implementation 'com.pangle.cn:pangrowth-djx-sdk:1.1.0.2'
// 穿山甲聚合 接入【穿山甲、快手】
implementation "com.pangle.cn:mediation-sdk:5.7.0.5"
implementation "com.pangle.cn:mediation-sdk:5.8.0.7"
// 腾讯播放器
implementation "com.tencent.liteav:LiteAVSDK_Player:11.3.0.13176"
......
......@@ -198,11 +198,10 @@
<!-- 短剧SDK -->
<provider
android:name="com.bytedance.sdk.dp.act.DPProvider"
android:authorities="${applicationId}.BDDPProvider"
android:name="com.bytedance.sdk.djx.act.DJXProvider"
android:authorities="${applicationId}.BDDJXProvider"
android:exported="false" />
<!-- 自有下载 -->
<provider
android:name="androidx.core.content.FileProvider"
......
......@@ -3,7 +3,8 @@
"site_id": "5433632",
"app_id": "540635",
"partner": "pangle_540635",
"secure_key": "80104f1bcd32f7b5780940bb9b6f438a"
"secure_key": "80104f1bcd32f7b5780940bb9b6f438a",
"secure_key_d": "2600266b17b080e7d941276c2389a842"
},
"feed": {
"news_list_ad_code_id": "",
......
......@@ -4,9 +4,9 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import com.bytedance.sdk.dp.DPDrama
import com.bytedance.sdk.dp.DPSdk
import com.bytedance.sdk.dp.IDPWidgetFactory
import com.bytedance.sdk.djx.DJXSdk
import com.bytedance.sdk.djx.IDJXService
import com.bytedance.sdk.djx.model.DJXDrama
import com.duben.speedplaylet.ad.express.ExpressManager
import com.duben.library.utils.json.JsonUtil
import com.duben.speedplaylet.common.AppConfig
......@@ -124,15 +124,15 @@ object LocalVedioManager {
// 请求穿山甲数据
private fun requestDrama(activity: Activity, data: VedioBean?) {
if (DPSdk.isStartSuccess() && data != null) {
DPSdk.factory().requestDrama(
arrayListOf(data.thirdId.toLong()), object : IDPWidgetFactory.DramaCallback {
if (DJXSdk.isStartSuccess() && data != null) {
DJXSdk.service().requestDrama(
arrayListOf(data.thirdId.toLong()), object : IDJXService.IDJXDramaCallback {
override fun onError(p0: Int, p1: String?) {
ToastUtil.show(activity, "网络错误!")
}
override fun onSuccess(
dataList: MutableList<out DPDrama>?,
dataList: MutableList<out DJXDrama>?,
info: MutableMap<String, Any>?
) {
dataList?.takeIf { it.isNotEmpty() }?.first()?.let {
......@@ -142,7 +142,6 @@ object LocalVedioManager {
bundle.putString(Constant.VEDIO_BEAN, JsonUtil.toJson(data))
readyGo(activity, DramaApiDetailActivity::class.java, bundle)
}
}
}
......
......@@ -4,13 +4,12 @@ import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import com.bytedance.hume.readapk.HumeSDK
import com.bytedance.sdk.dp.DPDrama
import com.bytedance.sdk.dp.DPSdk
import com.bytedance.sdk.dp.IDPWidgetFactory
import com.bytedance.sdk.djx.DJXSdk
import com.bytedance.sdk.djx.IDJXService
import com.bytedance.sdk.djx.model.DJXDrama
import com.duben.speedplaylet.BuildConfig
import com.duben.speedplaylet.MintsApplication
import com.duben.speedplaylet.R
......@@ -97,30 +96,33 @@ class AboutusActivity : BaseActivity(), View.OnClickListener {
findViewById<TextView>(R.id.tv_about_address).setOnLongClickListener {
if (BuildConfig.DEBUG) {
if (DPSdk.isStartSuccess()) {
DPSdk.factory().requestAllDrama(
if (DJXSdk.isStartSuccess()) {
DJXSdk.service().requestAllDrama(
1,
Int.MAX_VALUE,
true,
object : IDPWidgetFactory.DramaCallback {
object : IDJXService.IDJXDramaCallback {
override fun onError(code: Int, msg: String?) {
Log.d("AboutusActivity", "request failed, code = $code, msg = $msg")
Toast.makeText(this@AboutusActivity, "请求失败", Toast.LENGTH_SHORT)
.show()
}
override fun onSuccess(
dataList: MutableList<out DPDrama>?,
dataList: MutableList<out DJXDrama>?,
info: MutableMap<String, Any>?
) {
Toast.makeText(this@AboutusActivity, "请求成功", Toast.LENGTH_SHORT)
.show()
val json = JsonUtil.toJson(dataList)
Log.d("AboutusActivity", "request success, drama = " + json)
Log.d("AboutusActivity", "request success, dataList size = " + dataList!!.size)
Log.d(
"AboutusActivity",
"request success, dataList size = " + dataList!!.size
)
TrackManager.getInstance().commitCsjShotInfo(json)
}
})
} else {
Toast.makeText(this@AboutusActivity, "sdk还未初始化", Toast.LENGTH_SHORT).show()
......
package com.duben.speedplaylet.video.csj
import android.content.Context
import android.util.Log
import com.bytedance.sdk.dp.DPSdk
import com.bytedance.sdk.dp.DPSdkConfig
import com.bytedance.sdk.djx.DJXSdk
import com.bytedance.sdk.djx.DJXSdkConfig
/**
* 穿山甲短剧SDK
......@@ -16,21 +15,22 @@ object DPHolderManager {
fun initDpSdk(context: Context) {
//1. 初始化,最好放到application.onCreate()执行
val configBuilder = DPSdkConfig.Builder().debug(true)
DPSdk.init(context, "SDK_Setting_5433632.json", configBuilder.build())
// 初始化,最好放到application.onCreate()执行
val config = DJXSdkConfig.Builder().build()
DJXSdk.init(context, "SDK_Setting_5433632.json", config)
startDpSdk()
}
fun startDpSdk() {
DPSdk.start { isSuccess, message ->
//需要在广告SDK初始化成功后启动短剧服务
DJXSdk.start { isSuccess, message ->
//请确保使用Sdk时Sdk已经成功启动
//isSuccess=true表示启动成功
//启动失败,可以再次调用启动接口(建议最多不要超过3次)
isDPStarted = isSuccess
Log.e(TAG, "start result=$isSuccess, msg=$message")
}
}
......
......@@ -4,15 +4,19 @@ import android.app.Dialog
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.*
import androidx.core.content.ContextCompat
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieComposition
import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.LottieDrawable
import com.bytedance.sdk.dp.*
import com.bytedance.sdk.djx.DJXRewardAdResult
import com.bytedance.sdk.djx.DJXSdk
import com.bytedance.sdk.djx.IDJXWidget
import com.bytedance.sdk.djx.interfaces.listener.IDJXDramaListener
import com.bytedance.sdk.djx.interfaces.listener.IDJXDramaUnlockListener
import com.bytedance.sdk.djx.model.*
import com.bytedance.sdk.djx.params.DJXWidgetDramaDetailParams
import com.google.gson.Gson
import com.duben.speedplaylet.R
import com.duben.speedplaylet.ad.AdManager
......@@ -41,10 +45,6 @@ import com.duben.speedplaylet.utils.UIUtils
import com.duben.library.utils.GlideUtils
import com.duben.library.utils.nodoubleclick.AntiShake
import kotlinx.android.synthetic.main.drama_activity_api_detail.*
import kotlinx.android.synthetic.main.drama_activity_api_detail.iv_lucky_gif
import kotlinx.android.synthetic.main.drama_activity_api_detail.ll_lucky
import kotlinx.android.synthetic.main.drama_activity_api_detail.tv_lucky_status
import kotlinx.android.synthetic.main.fragment_main.*
/**
* @author Assen
......@@ -57,30 +57,24 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
companion object {
private const val TAG = "DramaApiDetailActivity"
var outerDrama: DPDrama? = null
var outerDrama: DJXDrama? = null
}
private val videoPresenter by lazy { VideoPresenter() }
private var mVipFlag = UserManager.getInstance().vipFlag
private var dpWidget: IDPWidget? = null
private var dpWidget: IDJXWidget? = null
private var isInited = false
private var drama: DPDrama? = null
private var drama: DJXDrama? = null
private var tipList: ArrayList<String>? = null
private var orderTagsList: ArrayList<String>? = null
private var isLuckyShow = false
private var unlockCallback: IDPDramaListener.Callback? = null
private var unlockCallback: IDJXDramaUnlockListener.UnlockCallback? = null
private var mInitUnlockIndex = 0
//可免费观看的最大集数
private var mUnlockIndexMap = mutableMapOf<Long, Int>()
// 已经解锁的集数
private var mHasUnlockIndexMap = mutableMapOf<Long, MutableList<Int>>()
private var blockView: View? = null
private var unlockBtn: Button? = null
private var leaveBtn: ImageView? = null
......@@ -88,22 +82,23 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
private var lastIndex = 1
// 是否开启无限下滑
private var enableInfiniteScroll = true
// 是否使用自定义举报页
private var enableCustomReport = false
private var hideLeftTopTips = false
private var hideMore = true
// 免费集数,建议设置前调用校验接口
private var freeSet = 5
// 解锁集数,建议设置前调用校验接口
private var lockSet = 2
private var isThirdId = false
private var isPlayNext = false
private var mode = DPDramaDetailConfig.SPECIFIC_DETAIL
private var mVedioBean: VedioBean? = null
private var mCurrentIndex = 0
......@@ -119,7 +114,6 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
freeSet = mVedioBean!!.unlockIndex
lockSet = if (mVedioBean!!.adGiveVedioNum == 0) 1 else mVedioBean!!.adGiveVedioNum
hideLeftTopTips = true
mode = DPDramaDetailConfig.SPECIFIC_DETAIL
enableInfiniteScroll = false
enableCustomReport = false
......@@ -163,8 +157,6 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
it.index = mVedioBean!!.seeIndex
mCurrentIndex = mVedioBean!!.seeIndex
mInitUnlockIndex = mVedioBean!!.unlockIndex
mUnlockIndexMap[it.id] = mInitUnlockIndex
mHasUnlockIndexMap[it.id] = arrayListOf(mInitUnlockIndex)
title_tv.text = it.title
if (mVedioBean!!.completeStatus == 0) {
episode_tv.text = String.format("共%d集 已完结", it.total)
......@@ -193,7 +185,7 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
ll_collect.setOnClickListener(this)
ll_lucky.setOnClickListener(this)
if (DPSdk.isStartSuccess()) {
if (DJXSdk.isStartSuccess()) {
init()
}
}
......@@ -210,9 +202,7 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
supportFragmentManager.beginTransaction().replace(R.id.fl_container, widget.fragment)
.commit()
leaveBtn?.setOnClickListener {
finish()
}
leaveBtn?.setOnClickListener { finish() }
vipBtn?.setOnClickListener {
val bundle = Bundle()
bundle.putString(VipActivity.VEDIO_ID, mVedioBean!!.vedioId.toString())
......@@ -224,302 +214,287 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
isInited = true
}
private fun initWidget() {
drama?.let { drama ->
dpWidget = DPSdk.factory().createDramaDetail(
DPWidgetDramaDetailParams.obtain()
.detailConfig(
DPDramaDetailConfig.obtain(mode)
.bottomOffset(20)
.infiniteScrollEnabled(enableInfiniteScroll)
.hideLeftTopTips(hideLeftTopTips, null)
.showCellularToast(true)
.hideMore(hideMore)
.listener(dramaListener)
.adListener(dramaAdListener)
.setCustomReport(enableCustomReport) { context, id ->
// 举报
}
)
.id(drama.id)
.index(drama.index)
// .currentDuration(currentDuration)
)
}
}
// 广告模式
private val adMode = DJXDramaUnlockAdMode.MODE_SPECIFIC
override fun onDestroy() {
dpWidget?.destroy()
ExpressManager.instance.destroy()
super.onDestroy()
}
private fun initWidget() {
val detailConfig =
DJXDramaDetailConfig.obtain(adMode, freeSet, object : IDJXDramaUnlockListener {
override fun unlockFlowStart(
drama: DJXDrama,
callback: IDJXDramaUnlockListener.UnlockCallback,
map: Map<String, Any>?
) {
Log.d(TAG, "=============> unlockFlowStart <=============")
// 解锁支持多种方式:支付、广告。根据业务需求自行定义
// 如果在其他时机已经购买会员可以设置 unlockInfo 中的 hasMember 为 true
// val info = DJXDramaUnlockInfo(drama.id, lockSet, DJXDramaUnlockMethod.METHOD_PAY_MEMBER, true)
// callback.onConfirm(info)
if (UserManager.getInstance().vipFlag) {
val info = DJXDramaUnlockInfo(
drama.id,
lockSet,
DJXDramaUnlockMethod.METHOD_PAY_MEMBER,
true
)
callback.onConfirm(info)
return
}
override fun onResume() {
super.onResume()
blockView?.visibility = View.VISIBLE
unlockCallback = callback
videoPresenter.showTurn()
// 展示广告
tv_title.text = String.format(
"解锁%s·第%d-%d集",
drama.title,
mInitUnlockIndex + 1,
mInitUnlockIndex + lockSet
)
showAdView()
if (mVipFlag != UserManager.getInstance().vipFlag && UserManager.getInstance().vipFlag) {
// 重置状态
resetData()
}
}
dpWidget?.let { widget ->
unlockBtn?.setOnClickListener {
val info = DJXDramaUnlockInfo(
drama.id,
lockSet,
DJXDramaUnlockMethod.METHOD_AD,
false
)
unlockCallback?.onConfirm(info)
}
}
}
override fun onPause() {
super.onPause()
}
override fun unlockFlowEnd(
drama: DJXDrama,
errCode: IDJXDramaUnlockListener.UnlockErrorStatus?,
map: Map<String, Any>?
) {
if (errCode == null) {
blockView?.visibility = View.GONE
}
}
private val dramaAdListener: IDPAdListener = object : IDPAdListener() {
override fun onDPAdRequest(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequest map = $map")
}
override fun showCustomAd(
drama: DJXDrama,
callback: IDJXDramaUnlockListener.CustomAdCallback
) {
dpWidget?.let { widget ->
override fun onDPAdRequestSuccess(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequestSuccess map = $map")
}
val carrierType = Constant.CARRIERTYPE_CSJ_VEDIO
AdManager.instance.showAd(
this@DramaApiDetailActivity, carrierType,
object : AdStatusListener {
var canFail = false
override fun adSuccess() {
canFail = true
callback.onShow("")
}
override fun onDPAdRequestFail(code: Int, msg: String?, map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequestFail map = $map")
}
override fun adFail() {
if (canFail) return
override fun onDPAdFillFail(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdFillFail map = $map")
}
NoPreAdManager.loadVideoAd(
this@DramaApiDetailActivity,
carrierType, object : AdStatusListener {
override fun adFail() {
showToast("广告太火爆了,请稍候再试")
}
override fun onDPAdShow(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdShow map = $map")
}
override fun adSuccess() {
callback.onShow("")
}
override fun onDPAdPlayStart(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayStart: map = $map")
}
override fun adClose(vo: HashMap<String, Any>?) {
vo?.let {
if (isThirdId) {
it["thirdId"] = "" + mVedioBean!!.thirdId
} else {
it["vedioId"] = "" + mVedioBean!!.vedioId
}
videoPresenter.unlock(it)
}
override fun onDPAdPlayPause(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayPause map = $map")
}
// 更新解锁集数
mInitUnlockIndex =
widget.currentDramaIndex + lockSet
mVedioBean!!.unlockIndex = mInitUnlockIndex
override fun onDPAdPlayContinue(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayContinue map = $map")
}
// 播放当前集
mVedioBean!!.seeIndex = mCurrentIndex
mVedioBean!!.orderTags = orderTagsList
LocalVedioManager.commitVedio(mVedioBean!!)
override fun onDPAdPlayComplete(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayComplete map = $map")
}
blockView?.visibility = View.GONE
override fun onDPAdClicked(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdClicked map = $map")
}
}
// 解锁
val result = DJXRewardAdResult(true)
callback.onRewardVerify(result)
}
})
}
private var dramaListener: IDPDramaListener = object : IDPDramaListener() {
override fun adClose(vo: HashMap<String, Any>?) {
vo?.let {
if (isThirdId) {
it["thirdId"] = "" + mVedioBean!!.thirdId
} else {
it["vedioId"] = "" + mVedioBean!!.vedioId
}
videoPresenter.unlock(it)
}
override fun onDPSeekTo(position: Int, time: Long) {
super.onDPSeekTo(position, time)
Log.d(TAG, "onDPSeekTo:")
}
// 更新解锁集数
mInitUnlockIndex =
widget.currentDramaIndex + lockSet
mVedioBean!!.unlockIndex = mInitUnlockIndex
blockView?.visibility = View.GONE
override fun onDPPageChange(position: Int, map: MutableMap<String, Any>?) {
super.onDPPageChange(position, map)
Log.d(TAG, "onDPPageChange:" + map?.toString())
}
// 播放当前集
mVedioBean!!.seeIndex = mCurrentIndex
mVedioBean!!.orderTags = orderTagsList
LocalVedioManager.commitVedio(mVedioBean!!)
override fun onDPVideoPlay(map: MutableMap<String, Any>?) {
super.onDPVideoPlay(map)
Log.d(TAG, "onDPVideoPlay:" + map?.toString())
(map?.get("index") as? Int?)?.let {
lastIndex = it
// 解锁
val result = DJXRewardAdResult(true)
callback.onRewardVerify(result)
}
}
)
}
}
}).apply {
infiniteScrollEnabled(enableInfiniteScroll)
listener(dramaListener)
adListener(adListener)
hideRewardDialog(true)
hideBack(true, null)
hideTopInfo(true)
hideBottomInfo(true)
hideMore(true)
hideCellularToast(true)
scriptTipsTopMargin = 0
topOffset = 0
bottomOffset = 0
if (enableCustomReport) {
setCustomReport { context, id -> }
}
}
}
override fun onDPVideoPause(map: MutableMap<String, Any>?) {
super.onDPVideoPause(map)
Log.d(TAG, "onDPVideoPause:" + map?.toString())
}
override fun onDPVideoContinue(map: MutableMap<String, Any>?) {
super.onDPVideoContinue(map)
Log.d(TAG, "onDPVideoContinue:" + map?.toString())
drama?.let { drama ->
dpWidget = DJXSdk.factory().createDramaDetail(
DJXWidgetDramaDetailParams.obtain(drama.id, drama.index, detailConfig)
.currentDuration(0)
.fromGid("-1") // 必传,否则影响推荐效果
.from(DJXWidgetDramaDetailParams.DJXDramaEnterFrom.DEFAULT) // 必传,否则影响推荐效果
)
}
}
override fun onDPVideoCompletion(map: MutableMap<String, Any>?) {
super.onDPVideoCompletion(map)
Log.d(TAG, "onDPVideoCompletion:" + map?.toString())
}
override fun onDestroy() {
dpWidget?.destroy()
ExpressManager.instance.destroy()
super.onDestroy()
}
override fun onDPVideoOver(map: MutableMap<String, Any>?) {
super.onDPVideoOver(map)
Log.d(TAG, "onDPVideoOver:" + map?.toString())
}
override fun onResume() {
super.onResume()
override fun onDPClose() {
super.onDPClose()
Log.d(TAG, "onDPClose")
}
videoPresenter.showTurn()
override fun onDPRequestStart(map: MutableMap<String, Any>?) {
super.onDPRequestStart(map)
Log.d(TAG, "onDPRequestStart:" + map?.toString())
if (mVipFlag != UserManager.getInstance().vipFlag && UserManager.getInstance().vipFlag) {
// 重置状态
resetData()
}
}
override fun onDPRequestFail(code: Int, msg: String?, map: MutableMap<String, Any>?) {
super.onDPRequestFail(code, msg, map)
Log.d(TAG, "onDPRequestFail:" + map?.toString())
}
private var dramaListener: IDJXDramaListener = object : IDJXDramaListener() {
override fun onDPRequestSuccess(list: MutableList<MutableMap<String, Any>>?) {
super.onDPRequestSuccess(list)
list?.forEach {
Log.d(TAG, "onDPRequestSuccess:$it")
}
override fun onDJXSeekTo(position: Int, time: Long) {
super.onDJXSeekTo(position, time)
Log.d(TAG, "onDJXSeekTo:")
}
override fun isNeedBlock(
drama: DPDrama?,
index: Int,
map: MutableMap<String, Any>?
): Boolean {
drama ?: return false
Log.d(TAG, "isNeedBlock: index = $index")
val unlockIndex = mUnlockIndexMap[drama.id] ?: mInitUnlockIndex
val hasUnlockList = mHasUnlockIndexMap[drama.id] ?: mutableListOf()
Log.d(
TAG,
"isNeedBlock: index = $index" + " " + unlockIndex + "s" + drama.id + mHasUnlockIndexMap +
" --- " + (index > unlockIndex && hasUnlockList.contains(index).not())
)
override fun onDJXPageChange(position: Int, map: MutableMap<String, Any>?) {
super.onDJXPageChange(position, map)
Log.d(TAG, "onDJXPageChange:" + "---> $position <---" + map?.toString())
val index = map?.get("index") as Int
info_tv.text = String.format("第%d集", index)
mCurrentIndex = index
showVipCountDialog(index - 1)
localShowLucky(index - 1)
val needBlock = index > unlockIndex && hasUnlockList.contains(index).not()
if (!needBlock) {
if (mCurrentIndex <= mInitUnlockIndex) {
blockView?.visibility = View.GONE
// 上送视频信息,若未解锁不上送
if (mCurrentIndex <= mVedioBean!!.unlockIndex) {
mVedioBean!!.seeIndex = index
mVedioBean!!.seeIndex = mCurrentIndex
mVedioBean!!.orderTags = orderTagsList
LocalVedioManager.commitVedio(mVedioBean!!)
}
}
return needBlock
}
override fun showAdIfNeeded(
drama: DPDrama?,
callback: Callback?,
map: MutableMap<String, Any>?
) {
super.showAdIfNeeded(drama, callback, map)
drama ?: return
Log.d(TAG, "showAdIfNeeded:" + map?.toString())
blockView?.visibility = View.VISIBLE
unlockCallback = callback
// 展示广告
tv_title.text = String.format(
"解锁%s·第%d-%d集",
drama.title,
mInitUnlockIndex + 1,
mInitUnlockIndex + lockSet
)
showAdView()
override fun onDJXVideoPlay(map: MutableMap<String, Any>?) {
super.onDJXVideoPlay(map)
Log.d(TAG, "onDJXVideoPlay:" + map?.toString())
(map?.get("index") as? Int?)?.let {
lastIndex = it
}
}
dpWidget?.let { widget ->
unlockBtn?.setOnClickListener {
val carrierType = Constant.CARRIERTYPE_CSJ_VEDIO
AdManager.instance.showAd(this@DramaApiDetailActivity, carrierType,
object : AdStatusListener {
var canFail = false
override fun adSuccess() {
canFail = true
}
override fun onDJXVideoPause(map: MutableMap<String, Any>?) {
super.onDJXVideoPause(map)
Log.d(TAG, "onDJXVideoPause:" + map?.toString())
}
override fun adFail() {
if (canFail) return
override fun onDJXVideoContinue(map: MutableMap<String, Any>?) {
super.onDJXVideoContinue(map)
Log.d(TAG, "onDJXVideoContinue:" + map?.toString())
}
NoPreAdManager.loadVideoAd(
this@DramaApiDetailActivity,
carrierType, object : AdStatusListener {
override fun adFail() {
showToast("广告太火爆了,请稍候再试")
}
override fun onDJXVideoCompletion(map: MutableMap<String, Any>?) {
super.onDJXVideoCompletion(map)
Log.d(TAG, "onDJXVideoCompletion:" + map?.toString())
}
override fun adSuccess() {
}
override fun onDJXVideoOver(map: MutableMap<String, Any>?) {
super.onDJXVideoOver(map)
Log.d(TAG, "onDJXVideoOver:" + map?.toString())
}
override fun adClose(vo: HashMap<String, Any>?) {
vo?.let {
if (isThirdId) {
it["thirdId"] = "" + mVedioBean!!.thirdId
} else {
it["vedioId"] = "" + mVedioBean!!.vedioId
}
videoPresenter.unlock(it)
}
override fun onDJXClose() {
super.onDJXClose()
Log.d(TAG, "onDJXClose")
}
// 更新解锁集数
for (i in 1 until lockSet) {
val hasUnlockList: MutableList<Int> =
mHasUnlockIndexMap[drama.id] ?: mutableListOf()
hasUnlockList.add(widget.currentDramaIndex + i)
mHasUnlockIndexMap[drama.id] = hasUnlockList
}
mInitUnlockIndex = mUnlockIndexMap[drama.id]!! + lockSet
mUnlockIndexMap[drama.id] =
mUnlockIndexMap[drama.id]!! + lockSet
mVedioBean!!.unlockIndex = mInitUnlockIndex
// 播放当前集
mVedioBean!!.seeIndex = mCurrentIndex
mVedioBean!!.orderTags = orderTagsList
LocalVedioManager.commitVedio(mVedioBean!!)
blockView?.visibility = View.GONE
callback?.onDramaRewardArrived() // 解锁当前集
}
})
}
override fun onDJXRequestStart(map: MutableMap<String, Any>?) {
super.onDJXRequestStart(map)
Log.d(TAG, "onDJXRequestStart:" + map?.toString())
}
override fun adClose(vo: HashMap<String, Any>?) {
vo?.let {
if (isThirdId) {
it["thirdId"] = "" + mVedioBean!!.thirdId
} else {
it["vedioId"] = "" + mVedioBean!!.vedioId
}
videoPresenter.unlock(it)
}
override fun onDJXRequestFail(code: Int, msg: String?, map: MutableMap<String, Any>?) {
super.onDJXRequestFail(code, msg, map)
Log.d(TAG, "onDJXRequestFail:" + map?.toString())
}
// 更新解锁集数
for (i in 1 until lockSet) {
val hasUnlockList: MutableList<Int> =
mHasUnlockIndexMap[drama.id] ?: mutableListOf()
hasUnlockList.add(widget.currentDramaIndex + i)
mHasUnlockIndexMap[drama.id] = hasUnlockList
}
mInitUnlockIndex = mUnlockIndexMap[drama.id]!! + lockSet
mUnlockIndexMap[drama.id] = mUnlockIndexMap[drama.id]!! + lockSet
mVedioBean!!.unlockIndex = mInitUnlockIndex
blockView?.visibility = View.GONE
// 播放当前集
mVedioBean!!.seeIndex = mCurrentIndex
mVedioBean!!.orderTags = orderTagsList
LocalVedioManager.commitVedio(mVedioBean!!)
callback?.onDramaRewardArrived() // 解锁当前集
}
})
}
override fun onDJXRequestSuccess(list: MutableList<MutableMap<String, Any>>?) {
super.onDJXRequestSuccess(list)
list?.forEach {
Log.d(TAG, "onDJXRequestSuccess:$it")
}
}
override fun onDramaSwitch(map: MutableMap<String, Any>?) {
super.onDramaSwitch(map)
Log.d(TAG, "onDramaSwitch:" + map?.toString())
val title = map?.get("title") as? String?
// val title = map?.get("title") as? String?
val total = map?.get("total") as? Int?
episode_tv.text = String.format("共%d集 已完结", total)
}
......@@ -628,12 +603,12 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
if (complete >= need) {
tv_lucky_status.text = SpanUtils()
.append("可领取")
.setForegroundColor(resources.getColor(R.color.apk_uninstalled))
.setForegroundColor(ContextCompat.getColor(this, R.color.apk_uninstalled))
.create()
} else {
tv_lucky_status.text = SpanUtils()
.append(complete.toString())
.setForegroundColor(resources.getColor(R.color.red))
.setForegroundColor(ContextCompat.getColor(this, R.color.red))
.append("/")
.append(need.toString())
.create()
......@@ -719,7 +694,13 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
// 超过免费剧
if (position >= mVedioBean!!.freeIndex) {
ll_lucky.visibility = View.VISIBLE
context?.let { GlideUtils.loadRoundImageViewGif(it,R.drawable.ic_nine,iv_lucky_gif) }
context?.let {
GlideUtils.loadRoundImageViewGif(
it,
R.drawable.ic_nine,
iv_lucky_gif
)
}
} else {
ll_lucky.visibility = View.GONE
}
......@@ -758,21 +739,6 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
//设置弹框集数为0
it.adGiveVedioNum = 0
mUnlockIndexMap = mutableMapOf()
mHasUnlockIndexMap = mutableMapOf()
drama?.let {
// 更新解锁集数
for (i in 0 until mInitUnlockIndex) {
val hasUnlockList: MutableList<Int> = mutableListOf()
hasUnlockList.add(i + 1)
mHasUnlockIndexMap[it.id] = hasUnlockList
}
mUnlockIndexMap[it.id] = mInitUnlockIndex
mUnlockIndexMap[it.id] = mUnlockIndexMap[it.id]!!
mVedioBean!!.unlockIndex = mInitUnlockIndex
}
// 播放当前集
mVedioBean!!.seeIndex = mCurrentIndex
mVedioBean!!.orderTags = orderTagsList
......@@ -781,9 +747,15 @@ class DramaApiDetailActivity : BaseActivity(), VideoEpisodeAdapter.OnEpisodeClic
if (block_view?.visibility == View.VISIBLE) {
blockView?.visibility = View.GONE
//解锁当前集
dpWidget?.let { widget ->
unlockCallback?.onDramaRewardArrived()
val info = drama?.id?.let { it1 ->
DJXDramaUnlockInfo(
it1,
lockSet,
DJXDramaUnlockMethod.METHOD_PAY_MEMBER,
true
)
}
unlockCallback?.onConfirm(info)
}
}
}
......
package com.duben.speedplaylet.video.csj
import android.util.Log
import com.bytedance.sdk.djx.DJXSdk
import com.bytedance.sdk.djx.IDJXWidget
import com.bytedance.sdk.djx.interfaces.listener.IDJXAdListener
import com.bytedance.sdk.djx.interfaces.listener.IDJXDramaListener
import com.bytedance.sdk.djx.interfaces.listener.IDJXDrawListener
import com.bytedance.sdk.djx.params.DJXWidgetDrawParams
import com.bytedance.sdk.dp.DPDramaDetailConfig
import com.bytedance.sdk.dp.DPSdk
import com.bytedance.sdk.dp.DPWidgetDrawParams
import com.bytedance.sdk.dp.IDPAdListener
import com.bytedance.sdk.dp.IDPDramaListener
import com.bytedance.sdk.dp.IDPDrawListener
import com.bytedance.sdk.dp.IDPWidget
import com.duben.speedplaylet.R
import com.duben.speedplaylet.common.AppConfig
import com.duben.speedplaylet.common.Constant
......@@ -31,12 +30,12 @@ class DramaTabFragment : BaseFragment(), VideoView {
private const val TAG = "DramaTabFragment"
}
private var dpWidget: IDPWidget? = null
private var dpWidget: IDJXWidget? = null
private var isInited = false
override fun initViewsAndEvents() {
if (DPSdk.isStartSuccess()) {
if (DJXSdk.isStartSuccess()) {
init()
}
}
......@@ -61,24 +60,14 @@ class DramaTabFragment : BaseFragment(), VideoView {
return
}
val dramaDetailConfig = DPDramaDetailConfig.obtain(DPDramaDetailConfig.SPECIFIC_DETAIL)
.setEnterDelegate { context, drama, current ->
DramaApiDetailActivity.outerDrama = drama
videoPresenter.getIndexList("" + drama.id, true)
}
.hideMore(false)
.hideLeftTopTips(false, null)
.listener(dramaListener) // 短剧详情页视频播放回调
.adListener(dramaAdListener) // 短剧详情页激励视频回调
dpWidget = DPSdk.factory().createDraw(
DPWidgetDrawParams.obtain()
.adOffset(0) //单位 dp,为 0 时可以不设置
.drawContentType(DPWidgetDrawParams.DRAW_CONTENT_TYPE_ONLY_DRAMA)
.drawChannelType(DPWidgetDrawParams.DRAW_CHANNEL_TYPE_RECOMMEND)
DJXSdk.factory().createDraw(
DJXWidgetDrawParams.obtain()
.adOffset(0)
.drawContentType(DJXWidgetDrawParams.DRAW_CONTENT_TYPE_ONLY_DRAMA)
.drawChannelType(DJXWidgetDrawParams.DRAW_CHANNEL_TYPE_RECOMMEND)
.hideClose(true, null)
.hideChannelName(true)
.dramaDetailConfig(dramaDetailConfig)
// .dramaDetailConfig(dramaDetailConfig)
.listener(drawListener) // 混排流内视频监听
.adListener(drawAdListener) // 混排流内广告监听
)
......@@ -125,61 +114,61 @@ class DramaTabFragment : BaseFragment(), VideoView {
// dpWidget?.fragment?.userVisibleHint = isVisibleToUser
}
private var dramaListener: IDPDramaListener = object : IDPDramaListener() {
override fun onDPSeekTo(position: Int, time: Long) {
super.onDPSeekTo(position, time)
Log.d(TAG, "onDPSeekTo:")
private var dramaListener: IDJXDramaListener = object : IDJXDramaListener() {
override fun onDJXSeekTo(position: Int, time: Long) {
super.onDJXSeekTo(position, time)
Log.d(TAG, "onDJXSeekTo:")
}
override fun onDPPageChange(position: Int, map: MutableMap<String, Any>?) {
super.onDPPageChange(position, map)
Log.d(TAG, "onDPPageChange:" + map?.toString())
override fun onDJXPageChange(position: Int, map: MutableMap<String, Any>?) {
super.onDJXPageChange(position, map)
Log.d(TAG, "onDJXPageChange:" + map?.toString())
}
override fun onDPVideoPlay(map: MutableMap<String, Any>?) {
super.onDPVideoPlay(map)
Log.d(TAG, "onDPVideoPlay:" + map?.toString())
override fun onDJXVideoPlay(map: MutableMap<String, Any>?) {
super.onDJXVideoPlay(map)
Log.d(TAG, "onDJXVideoPlay:" + map?.toString())
}
override fun onDPVideoPause(map: MutableMap<String, Any>?) {
super.onDPVideoPause(map)
Log.d(TAG, "onDPVideoPause:" + map?.toString())
override fun onDJXVideoPause(map: MutableMap<String, Any>?) {
super.onDJXVideoPause(map)
Log.d(TAG, "onDJXVideoPause:" + map?.toString())
}
override fun onDPVideoContinue(map: MutableMap<String, Any>?) {
super.onDPVideoContinue(map)
Log.d(TAG, "onDPVideoContinue:" + map?.toString())
override fun onDJXVideoContinue(map: MutableMap<String, Any>?) {
super.onDJXVideoContinue(map)
Log.d(TAG, "onDJXVideoContinue:" + map?.toString())
}
override fun onDPVideoCompletion(map: MutableMap<String, Any>?) {
super.onDPVideoCompletion(map)
Log.d(TAG, "onDPVideoCompletion:" + map?.toString())
override fun onDJXVideoCompletion(map: MutableMap<String, Any>?) {
super.onDJXVideoCompletion(map)
Log.d(TAG, "onDJXVideoCompletion:" + map?.toString())
}
override fun onDPVideoOver(map: MutableMap<String, Any>?) {
super.onDPVideoOver(map)
Log.d(TAG, "onDPVideoOver:" + map?.toString())
override fun onDJXVideoOver(map: MutableMap<String, Any>?) {
super.onDJXVideoOver(map)
Log.d(TAG, "onDJXVideoOver:" + map?.toString())
}
override fun onDPClose() {
super.onDPClose()
Log.d(TAG, "onDPClose")
override fun onDJXClose() {
super.onDJXClose()
Log.d(TAG, "onDJXClose")
}
override fun onDPRequestStart(map: MutableMap<String, Any>?) {
super.onDPRequestStart(map)
Log.d(TAG, "onDPRequestStart:" + map?.toString())
override fun onDJXRequestStart(map: MutableMap<String, Any>?) {
super.onDJXRequestStart(map)
Log.d(TAG, "onDJXRequestStart:" + map?.toString())
}
override fun onDPRequestFail(code: Int, msg: String?, map: MutableMap<String, Any>?) {
super.onDPRequestFail(code, msg, map)
Log.d(TAG, "onDPRequestFail:" + map?.toString())
override fun onDJXRequestFail(code: Int, msg: String?, map: MutableMap<String, Any>?) {
super.onDJXRequestFail(code, msg, map)
Log.d(TAG, "onDJXRequestFail:" + map?.toString())
}
override fun onDPRequestSuccess(list: MutableList<MutableMap<String, Any>>?) {
super.onDPRequestSuccess(list)
override fun onDJXRequestSuccess(list: MutableList<MutableMap<String, Any>>?) {
super.onDJXRequestSuccess(list)
list?.forEach { it ->
Log.d(TAG, "onDPRequestSuccess:" + it.toString())
Log.d(TAG, "onDJXRequestSuccess:" + it.toString())
}
}
......@@ -189,105 +178,91 @@ class DramaTabFragment : BaseFragment(), VideoView {
}
}
private val drawListener = object : IDPDrawListener() {
override fun onDPRefreshFinish() {
Log.d(TAG, "onDPRefreshFinish")
private val drawListener: IDJXDrawListener = object : IDJXDrawListener() {
override fun onDJXRefreshFinish() {
Log.d(TAG, "onDJXRefreshFinish")
}
override fun onDPPageChange(position: Int) {
Log.d(TAG, "onDPPageChange: $position")
override fun onDJXPageChange(position: Int, p1: MutableMap<String, Any>?) {
Log.d(TAG, "onDJXPageChange: $position")
}
override fun onDPVideoPlay(map: Map<String, Any>) {
Log.d(TAG, "onDPVideoPlay: $map")
override fun onDJXVideoPlay(map: Map<String, Any>) {
Log.d(TAG, "onDJXVideoPlay: $map")
}
override fun onDPVideoCompletion(map: Map<String, Any>) {
Log.d(TAG, "onDPVideoCompletion: $map")
override fun onDJXVideoCompletion(map: Map<String, Any>) {
Log.d(TAG, "onDJXVideoCompletion: $map")
// dpWidget?.pauseForWatchTogether()
// videoPresenter.getIndexList("" + map["drama_id"], true)
}
override fun onDPVideoOver(map: Map<String, Any>) {
Log.d(TAG, "onDPVideoOver: $map")
override fun onDJXVideoOver(map: Map<String, Any>) {
Log.d(TAG, "onDJXVideoOver: $map")
}
override fun onDPClose() {
Log.d(TAG, "onDPClose")
override fun onDJXClose() {
Log.d(TAG, "onDJXClose")
}
override fun onDPRequestStart(map: Map<String, Any>?) {
Log.d(TAG, "onDPRequestStart: $map")
override fun onDJXRequestStart(map: Map<String, Any>?) {
Log.d(TAG, "onDJXRequestStart: $map")
}
override fun onDPRequestSuccess(list: List<Map<String, Any>>) {
Log.d(TAG, "onDPRequestSuccess: $list")
override fun onDJXRequestSuccess(list: List<Map<String, Any>>) {
Log.d(TAG, "onDJXRequestSuccess: $list")
}
override fun onDPRequestFail(
override fun onDJXRequestFail(
code: Int, msg: String, map: Map<String, Any>?
) {
Log.d(TAG, "onDPRequestFail: code = $code, msg = $msg, map = $map")
Log.d(TAG, "onDJXRequestFail: code = $code, msg = $msg, map = $map")
}
override fun onDPClickAuthorName(map: Map<String, Any>) {
Log.d(TAG, "onDPClickAuthorName: $map")
}
override fun onDJXReportResult(p0: Boolean, p1: MutableMap<String, Any>?) {
override fun onDPClickAvatar(map: Map<String, Any>) {
Log.d(TAG, "onDPClickAvatar: $map")
}
override fun onDPClickComment(map: Map<String, Any>) {
Log.d(TAG, "onDPClickComment: $map")
}
override fun onDJXSeekTo(p0: Int, p1: Long) {
override fun onDPClickLike(
isLike: Boolean, map: Map<String, Any>
) {
Log.d(TAG, "onDPClickLike: isLike = $isLike, map = $map")
}
override fun onDPVideoPause(map: Map<String, Any>) {
Log.d(TAG, "onDPVideoPause: $map")
override fun onDJXVideoPause(map: Map<String, Any>) {
Log.d(TAG, "onDJXVideoPause: $map")
}
override fun onDPVideoContinue(map: Map<String, Any>) {
Log.d(TAG, "onDPVideoContinue: $map")
}
override fun onDPClickShare(map: MutableMap<String, Any>?) {
Log.d(TAG, "onDPClickShare $map")
override fun onDJXVideoContinue(map: Map<String, Any>) {
Log.d(TAG, "onDJXVideoContinue: $map")
}
}
private val dramaAdListener: IDPAdListener = object : IDPAdListener() {
override fun onDPAdRequest(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequest map = $map")
private val dramaAdListener: IDJXAdListener = object : IDJXAdListener() {
override fun onDJXAdRequest(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdRequest map = $map")
}
override fun onDPAdRequestSuccess(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequestSuccess map = $map")
override fun onDJXAdRequestSuccess(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdRequestSuccess map = $map")
}
override fun onDPAdRequestFail(code: Int, msg: String?, map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequestFail map = $map")
override fun onDJXAdRequestFail(code: Int, msg: String?, map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdRequestFail map = $map")
}
override fun onDPAdFillFail(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdFillFail map = $map")
override fun onDJXAdFillFail(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdFillFail map = $map")
}
override fun onDPAdShow(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdShow map = $map")
override fun onDJXAdShow(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdShow map = $map")
}
override fun onDPAdPlayStart(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayStart: map = $map")
override fun onDJXAdPlayStart(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayStart: map = $map")
}
override fun onDPAdPlayPause(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayPause map = $map")
override fun onDJXAdPlayPause(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayPause map = $map")
}
override fun onRewardVerify(map: MutableMap<String, Any>?) {
......@@ -298,57 +273,57 @@ class DramaTabFragment : BaseFragment(), VideoView {
Log.d(TAG, "onSkippedVideo map = $map")
}
override fun onDPAdPlayContinue(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayContinue map = $map")
override fun onDJXAdPlayContinue(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayContinue map = $map")
}
override fun onDPAdPlayComplete(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayComplete map = $map")
override fun onDJXAdPlayComplete(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayComplete map = $map")
}
override fun onDPAdClicked(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdClicked map = $map")
override fun onDJXAdClicked(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdClicked map = $map")
}
}
private val drawAdListener: IDPAdListener = object : IDPAdListener() {
override fun onDPAdRequest(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequest map = $map")
private val drawAdListener: IDJXAdListener = object : IDJXAdListener() {
override fun onDJXAdRequest(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdRequest map = $map")
}
override fun onDPAdRequestSuccess(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequestSuccess map = $map")
override fun onDJXAdRequestSuccess(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdRequestSuccess map = $map")
}
override fun onDPAdRequestFail(code: Int, msg: String?, map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdRequestFail map = $map")
override fun onDJXAdRequestFail(code: Int, msg: String?, map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdRequestFail map = $map")
}
override fun onDPAdFillFail(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdFillFail map = $map")
override fun onDJXAdFillFail(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdFillFail map = $map")
}
override fun onDPAdShow(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdShow map = $map")
override fun onDJXAdShow(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdShow map = $map")
}
override fun onDPAdPlayStart(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayStart: map = $map")
override fun onDJXAdPlayStart(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayStart: map = $map")
}
override fun onDPAdPlayPause(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayPause map = $map")
override fun onDJXAdPlayPause(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayPause map = $map")
}
override fun onDPAdPlayContinue(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayContinue map = $map")
override fun onDJXAdPlayContinue(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayContinue map = $map")
}
override fun onDPAdPlayComplete(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdPlayComplete map = $map")
override fun onDJXAdPlayComplete(map: Map<String?, Any?>) {
Log.d(TAG, "onDJXAdPlayComplete map = $map")
}
override fun onDPAdClicked(map: Map<String?, Any?>) {
override fun onDJXAdClicked(map: Map<String?, Any?>) {
Log.d(TAG, "onDPAdClicked map = $map")
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment