From 7b86f831779d7f91d8f1fc0fee98282b345a0cdf Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Thu, 15 Jan 2026 15:26:20 +0800 Subject: [PATCH] =?UTF-8?q?3=E7=A7=92=E9=92=9F=20=E8=BF=98=E6=9C=AA?= =?UTF-8?q?=E6=88=90=E5=8A=9F=EF=BC=8C=E5=B0=B1=E9=80=80=E5=87=BA=20?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../features/watchad/WatchAdActivity.kt | 19 +++++++++++++++++-- app/src/main/res/values-pt/strings.xml | 4 ++++ app/src/main/res/values/strings.xml | 1 + .../remax/bill/ads/RewardedAdController.kt | 4 +++- .../java/com/remax/bill/ads/ext/AdShowExt.kt | 9 +++++---- .../ads/pangle/PangleRewardedAdController.kt | 3 ++- .../ads/topon/TopOnRewardedAdController.kt | 3 ++- 7 files changed, 34 insertions(+), 9 deletions(-) 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 ae00e35..315f081 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 @@ -22,6 +22,7 @@ import com.remax.bill.ads.ext.AdShowExt import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import com.viddin.videos.free.R import com.viddin.videos.free.databinding.ActivityWatchAdBinding as ViewBinding @@ -30,6 +31,7 @@ import com.viddin.videos.free.databinding.ActivityWatchAdBinding as ViewBinding class WatchAdActivity : AppViewsEmptyViewModelActivity(), OnTabStyleListener { override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater) + private var mIsLoadSuccess: Boolean = false private var mRewardedDollarNum: Double = 0.0 override var mEnableBannerAd = false @@ -177,18 +179,27 @@ class WatchAdActivity : AppViewsEmptyViewModelActivity(), OnTabStyl } } else { lifecycleScope.launch { + binding.root.postDelayed({ + if (!mIsLoadSuccess) { + handleLoadFailed() + } + }, 3000) + + try { when(AdShowExt.showRewardedVideoAd(this@WatchAdActivity, { rewardedData -> mRewardedDollarNum = rewardedData.rewardNum }, { notifyAdWatchFinish() + }, { + mIsLoadSuccess = true })) { is AdResult.Success -> { - val temp = 111 + mIsLoadSuccess = true } is AdResult.Failure -> { - val temp = 111 + handleLoadFailed() } AdResult.Loading -> { @@ -202,6 +213,10 @@ class WatchAdActivity : AppViewsEmptyViewModelActivity(), OnTabStyl } } + private fun handleLoadFailed() { + AndroidUtil.showToast(R.string.ad_load_fail) + finish() + } companion object { diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 1e80c57..4d3b94d 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -64,4 +64,8 @@ Has claimed %s cash successfully. Watch the full video to get rewards! + Ad failed to load + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d89985e..c4c0606 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -236,5 +236,6 @@ Retirada falhou. Verifique o histórico de retiradas para detalhes. Não tens ouro suficiente. + O anúncio não carregou \ No newline at end of file diff --git a/bill/src/main/java/com/remax/bill/ads/RewardedAdController.kt b/bill/src/main/java/com/remax/bill/ads/RewardedAdController.kt index 16079f1..8fcf242 100644 --- a/bill/src/main/java/com/remax/bill/ads/RewardedAdController.kt +++ b/bill/src/main/java/com/remax/bill/ads/RewardedAdController.kt @@ -136,7 +136,8 @@ class RewardedAdController private constructor() { activity: Activity, adUnitId: String? = null, onRewardEarned: ((RewardItem, CommonRewardedData) -> Unit)? = null, - closeCallback: () -> Unit + closeCallback: () -> Unit, + readyCallback:() -> Unit, ): AdResult { val finalAdUnitId = adUnitId ?: BuildConfig.ADMOB_REWARDED_ID @@ -190,6 +191,7 @@ class RewardedAdController private constructor() { if (cachedAd != null) { ADLoadingDialog.hide() + readyCallback.invoke() AdLogger.d("Admob使用缓存中的激励广告,广告位ID: %s", finalAdUnitId) // 3. 显示广告 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 3d62d42..d7f1eba 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 @@ -295,7 +295,8 @@ object AdShowExt { suspend fun showRewardedVideoAd( activity: Activity, rewardCallback: ((CommonRewardedData) -> Unit)? = null, - closeCallback: ()->Unit + closeCallback: ()->Unit, + readyCallback:() -> Unit, ): AdResult { AdLogger.d("激励视频广告竞价开始") val winner = RewardedBiddingManager.bidding(activity) @@ -312,7 +313,7 @@ object AdShowExt { { rewardItem, commonRewardedData -> rewardCallback?.invoke(commonRewardedData) AdLogger.e("AdMob激励视频奖励回调, 奖励值:${commonRewardedData.rewardNum}") - }, closeCallback + }, closeCallback, readyCallback ) } BiddingWinner.PANGLE -> { @@ -323,7 +324,7 @@ object AdShowExt { { pagRewardItem, commonRewardedData -> rewardCallback?.invoke(commonRewardedData) AdLogger.e("Pangle激励视频奖励回调, 奖励值:${commonRewardedData.rewardNum}") - }, closeCallback + }, closeCallback, readyCallback ) } BiddingWinner.TOPON -> { @@ -336,7 +337,7 @@ object AdShowExt { rewardCallback?.invoke(rewardedData) //xxxx AdLogger.e("TopOn激励视频奖励回调, 奖励值:$revenueValue") - }, closeCallback + }, closeCallback, readyCallback ) } } diff --git a/bill/src/main/java/com/remax/bill/ads/pangle/PangleRewardedAdController.kt b/bill/src/main/java/com/remax/bill/ads/pangle/PangleRewardedAdController.kt index 4cfdd88..ae0c16f 100644 --- a/bill/src/main/java/com/remax/bill/ads/pangle/PangleRewardedAdController.kt +++ b/bill/src/main/java/com/remax/bill/ads/pangle/PangleRewardedAdController.kt @@ -102,7 +102,7 @@ class PangleRewardedAdController private constructor() { activity: Activity, adUnitId: String? = null, onRewardEarned: ((PAGRewardItem, CommonRewardedData) -> Unit)? = null, - closeCallback: () -> Unit + closeCallback: () -> Unit, readyCallback:() -> Unit, ): AdResult { val finalAdUnitId = adUnitId ?: BuildConfig.PANGLE_REWARDED_ID @@ -149,6 +149,7 @@ class PangleRewardedAdController private constructor() { ADLoadingDialog.hide() currentRewardedAd = null currentAdUnitId = null + readyCallback.invoke() showAdInternal(activity, ad, finalAdUnitId, onRewardEarned, closeCallback) } else { ADLoadingDialog.hide() 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 92443a7..d6568e0 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() { activity: Activity, placementId: String? = null, onRewardEarned: ((String, Int, Double) -> Unit)? = null, - closeCallback: ()->Unit + closeCallback: ()->Unit, readyCallback:() -> Unit, ): AdResult { val finalPlacementId = resolvePlacementId(placementId) if (finalPlacementId.isBlank()) { @@ -184,6 +184,7 @@ class TopOnRewardedAdController private constructor() { if (entry != null && entry.ad.isAdReady) { ADLoadingDialog.hide() + readyCallback.invoke() AdLogger.d("TopOn使用缓存激励广告展示,广告位ID: %s", finalPlacementId) entry.listener.awaitShow(activity, onRewardEarned, closeCallback) } else {