From cef3efaa4e751835b17a697631ad6f5453637dbc Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Thu, 18 Dec 2025 15:01:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BF=80=E5=8A=B1=E5=B9=BF=E5=91=8A=20revence?= =?UTF-8?q?=20=E5=80=BC=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../features/watchad/WatchAdActivity.kt | 19 ++++++++++++- .../java/com/remax/bill/ads/ext/AdShowExt.kt | 27 +++++++++++++------ .../remax/bill/ads/ext/CommonRewardedData.kt | 5 ++++ .../ads/topon/TopOnRewardedAdController.kt | 13 +++++---- 4 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 bill/src/main/java/com/remax/bill/ads/ext/CommonRewardedData.kt diff --git a/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt b/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt index 9fbb3b5..0a02d99 100644 --- a/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/watchad/WatchAdActivity.kt @@ -16,6 +16,7 @@ import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.beans.WatchAdNotifyBean import com.gamedog.vididin.main.interfaces.OnTabStyleListener import com.gamedog.vididin.manager.WithdrawItemBean +import com.remax.bill.ads.AdResult import com.remax.bill.ads.ext.AdShowExt import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @@ -27,6 +28,7 @@ import com.vididin.real.money.game.databinding.ActivityWatchAdBinding as ViewBin class WatchAdActivity : AppViewsEmptyViewModelActivity(), OnTabStyleListener { override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater) + private var mRewardedDollarNum: Float = 0F override var mEnableBannerAd = false private lateinit var mCountDownTimer: CountDownTimer @@ -159,7 +161,22 @@ class WatchAdActivity : AppViewsEmptyViewModelActivity(), OnTabStyl private fun showVideoAd() { lifecycleScope.launch { try { - AdShowExt.showRewardedVideoAd(this@WatchAdActivity, null) + when(AdShowExt.showRewardedVideoAd(this@WatchAdActivity, { rewardedData -> + mRewardedDollarNum = rewardedData.rewardNum + })) { + is AdResult.Success -> { + val temp = 111 + + } + + is AdResult.Failure -> { + val temp = 111 + } + + AdResult.Loading -> { + val temp = 111 + } + } } catch (e: Exception) { e.printStackTrace() } diff --git a/bill/src/main/java/com/remax/bill/ads/ext/AdShowExt.kt b/bill/src/main/java/com/remax/bill/ads/ext/AdShowExt.kt index 0b9727c..7dd1fef 100644 --- a/bill/src/main/java/com/remax/bill/ads/ext/AdShowExt.kt +++ b/bill/src/main/java/com/remax/bill/ads/ext/AdShowExt.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Context import android.view.View import android.view.ViewGroup -import com.google.android.gms.ads.rewarded.RewardItem import com.remax.bill.BuildConfig import com.remax.bill.ads.AdResult import com.remax.bill.ads.AppOpenAdController @@ -295,7 +294,7 @@ object AdShowExt { */ suspend fun showRewardedVideoAd( activity: Activity, - rewardCallback: ((RewardItem) -> Unit)? = null + rewardCallback: ((CommonRewardedData) -> Unit)? = null ): AdResult { AdLogger.d("激励视频广告竞价开始") val winner = RewardedBiddingManager.bidding(activity) @@ -306,24 +305,36 @@ object AdShowExt { AdLogger.d("使用 AdMob 展示激励视频广告") RewardedAdController.getInstance().showAd( activity, - "", - rewardCallback + BuildConfig.ADMOB_REWARDED_ID, + { rewardItem -> + val rewardedData = CommonRewardedData(rewardItem.amount.toFloat()) + rewardCallback?.invoke(rewardedData) + AdLogger.e("AdMob激励视频奖励回调, 奖励值:${rewardItem.amount}") + } ) } BiddingWinner.PANGLE -> { AdLogger.d("使用 Pangle 展示激励视频广告") PangleRewardedAdController.getInstance().showAd( activity, - "", - null + BuildConfig.PANGLE_REWARDED_ID, + { pagRewardItem -> + val rewardedData = CommonRewardedData(pagRewardItem.rewardAmount.toFloat()) + rewardCallback?.invoke(rewardedData) + AdLogger.e("Pangle激励视频奖励回调, 奖励值:${pagRewardItem.rewardAmount}") + } ) } BiddingWinner.TOPON -> { AdLogger.d("使用 TopOn 展示激励视频广告") TopOnRewardedAdController.getInstance().showAd( activity, - "", - null + BuildConfig.TOPON_REWARDED_ID, + { _, _, revenueValue -> + val rewardedData = CommonRewardedData(revenueValue.toFloat()) + rewardCallback?.invoke(rewardedData) + AdLogger.e("TopOn激励视频奖励回调, 奖励值:$revenueValue") + } ) } } diff --git a/bill/src/main/java/com/remax/bill/ads/ext/CommonRewardedData.kt b/bill/src/main/java/com/remax/bill/ads/ext/CommonRewardedData.kt new file mode 100644 index 0000000..0407f20 --- /dev/null +++ b/bill/src/main/java/com/remax/bill/ads/ext/CommonRewardedData.kt @@ -0,0 +1,5 @@ +package com.remax.bill.ads.ext + +data class CommonRewardedData ( + val rewardNum: Float = 0F +) \ No newline at end of file diff --git a/bill/src/main/java/com/remax/bill/ads/topon/TopOnRewardedAdController.kt b/bill/src/main/java/com/remax/bill/ads/topon/TopOnRewardedAdController.kt index bc951dd..8e55c0b 100644 --- a/bill/src/main/java/com/remax/bill/ads/topon/TopOnRewardedAdController.kt +++ b/bill/src/main/java/com/remax/bill/ads/topon/TopOnRewardedAdController.kt @@ -131,7 +131,7 @@ class TopOnRewardedAdController private constructor() { suspend fun showAd( activity: Activity, placementId: String? = null, - onRewardEarned: ((String, Int) -> Unit)? = null + onRewardEarned: ((String, Int, Double) -> Unit)? = null ): AdResult { val finalPlacementId = resolvePlacementId(placementId) if (finalPlacementId.isBlank()) { @@ -296,7 +296,7 @@ class TopOnRewardedAdController private constructor() { private var lastAdInfo: TUAdInfo? = null private var cacheTime: Long = System.currentTimeMillis() private var hasRewarded: Boolean = false - private var rewardCallback: ((String, Int) -> Unit)? = null + private var rewardCallback: ((String, Int, Double) -> Unit)? = null fun attachLoadContinuation(continuation: kotlinx.coroutines.CancellableContinuation) { loadContinuation = continuation @@ -324,7 +324,7 @@ class TopOnRewardedAdController private constructor() { showContinuation = null } - suspend fun awaitShow(activity: Activity, onRewardEarned: ((String, Int) -> Unit)?): AdResult { + suspend fun awaitShow(activity: Activity, onRewardEarned: ((String, Int, Double) -> Unit)?): AdResult { if (!rewardedVideoAd.isAdReady) { AdLogger.w("TopOn激励广告未准备好,展示终止,广告位ID: %s", placementId) return AdResult.Failure(createAdException("广告未准备好")) @@ -528,8 +528,11 @@ class TopOnRewardedAdController private constructor() { "ad_source" to (adInfo.networkName ?: "") ) ) - - rewardCallback?.invoke(rewardType, rewardAmount) + var revenueValue = 0.0 + if ("USD" == adInfo.currency) { + revenueValue = adInfo.publisherRevenue ?: 0.0 + } + rewardCallback?.invoke(rewardType, rewardAmount, revenueValue) } override fun onAdRevenuePaid(adInfo: TUAdInfo) {