From 6c9f593e1366f1fabcc10a41a9381adc704390c2 Mon Sep 17 00:00:00 2001 From: Mobile Ads Developer Relations Date: Wed, 15 Jan 2025 21:35:09 -0800 Subject: [PATCH] #UnityAdsAdapter Don't check for activity context when it is not actually needed. PiperOrigin-RevId: 716074319 --- ThirdPartyAdapters/unity/CHANGELOG.md | 3 ++ .../mediation/unity/UnityInterstitialAd.java | 36 +++---------------- .../ads/mediation/unity/UnityRewardedAd.java | 9 ----- 3 files changed, 7 insertions(+), 41 deletions(-) diff --git a/ThirdPartyAdapters/unity/CHANGELOG.md b/ThirdPartyAdapters/unity/CHANGELOG.md index bdcc9f4a6..e4ea8ac49 100644 --- a/ThirdPartyAdapters/unity/CHANGELOG.md +++ b/ThirdPartyAdapters/unity/CHANGELOG.md @@ -1,5 +1,8 @@ ## Unity Ads Android Mediation Adapter Changelog +#### Next version +- Updated to not check for activity context when it is not actually needed. + #### Version 4.12.5.1 - Fixed bidding banner ad load failures by setting the object ID when loading ads. diff --git a/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityInterstitialAd.java b/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityInterstitialAd.java index 85c88fbbe..8849a5a0c 100644 --- a/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityInterstitialAd.java +++ b/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityInterstitialAd.java @@ -2,12 +2,8 @@ import static com.google.ads.mediation.unity.UnityAdsAdapterUtils.createSDKError; import static com.google.ads.mediation.unity.UnityMediationAdapter.ADAPTER_ERROR_DOMAIN; -import static com.google.ads.mediation.unity.UnityMediationAdapter.ERROR_CONTEXT_NOT_ACTIVITY; import static com.google.ads.mediation.unity.UnityMediationAdapter.ERROR_INVALID_SERVER_PARAMETERS; -import static com.google.ads.mediation.unity.UnityMediationAdapter.ERROR_MSG_CONTEXT_NULL; import static com.google.ads.mediation.unity.UnityMediationAdapter.ERROR_MSG_MISSING_PARAMETERS; -import static com.google.ads.mediation.unity.UnityMediationAdapter.ERROR_MSG_NON_ACTIVITY; -import static com.google.ads.mediation.unity.UnityMediationAdapter.ERROR_NULL_CONTEXT; import static com.google.ads.mediation.unity.UnityMediationAdapter.KEY_GAME_ID; import static com.google.ads.mediation.unity.UnityMediationAdapter.KEY_PLACEMENT_ID; import static com.google.ads.mediation.unity.UnityMediationAdapter.KEY_WATERMARK; @@ -32,7 +28,6 @@ import com.unity3d.ads.UnityAds.UnityAdsShowError; import com.unity3d.ads.UnityAdsLoadOptions; import com.unity3d.ads.UnityAdsShowOptions; -import java.lang.ref.WeakReference; import java.util.UUID; /** @@ -44,8 +39,6 @@ public class UnityInterstitialAd static final String ERROR_MSG_INTERSTITIAL_INITIALIZATION_FAILED = "Unity Ads initialization failed for game ID '%s' with error message: %s"; - /** An Android {@link Activity} weak reference used to show ads. */ - private WeakReference activityWeakReference; /** Object ID used to track loaded/shown ads. */ private String objectId; @@ -170,15 +163,6 @@ public void loadAd() { return; } - if (!(context instanceof Activity)) { - AdError adError = - new AdError(ERROR_CONTEXT_NOT_ACTIVITY, ERROR_MSG_NON_ACTIVITY, ADAPTER_ERROR_DOMAIN); - adLoadCallback.onFailure(adError); - return; - } - Activity activity = (Activity) context; - activityWeakReference = new WeakReference<>(activity); - final String adMarkup = adConfiguration.getBidResponse(); unityInitializer.initializeUnityAds( @@ -222,21 +206,6 @@ public void onInitializationFailed( @Override public void showAd(Context context) { - Activity activityReference = activityWeakReference == null ? null : activityWeakReference.get(); - if (activityReference == null) { - Log.w( - UnityMediationAdapter.TAG, - "Failed to show interstitial ad for placement ID '" - + placementId - + "' from Unity Ads: Activity context is null."); - if (interstitialAdCallback != null) { - AdError adError = - new AdError(ERROR_NULL_CONTEXT, ERROR_MSG_CONTEXT_NULL, ADAPTER_ERROR_DOMAIN); - interstitialAdCallback.onAdFailedToShow(adError); - } - return; - } - if (placementId == null) { Log.w( UnityMediationAdapter.TAG, @@ -247,6 +216,9 @@ public void showAd(Context context) { unityAdsLoader.createUnityAdsShowOptionsWithId(objectId); unityAdsShowOptions.set(KEY_WATERMARK, adConfiguration.getWatermark()); // UnityAds can handle a null placement ID so show is always called here. - unityAdsLoader.show(activityReference, placementId, unityAdsShowOptions, this); + // Note: Context here is the activity that the publisher passed to GMA SDK's show() method + // (https://developers.google.com/android/reference/com/google/android/gms/ads/appopen/AppOpenAd#show(android.app.Activity)). + // So, this is guaranteed to be an activity context. + unityAdsLoader.show((Activity) context, placementId, unityAdsShowOptions, this); } } diff --git a/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityRewardedAd.java b/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityRewardedAd.java index 7598fbaeb..fcebe8fd2 100644 --- a/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityRewardedAd.java +++ b/ThirdPartyAdapters/unity/unity/src/main/java/com/google/ads/mediation/unity/UnityRewardedAd.java @@ -117,15 +117,6 @@ public UnityRewardedAd( public void loadAd() { Context context = mediationRewardedAdConfiguration.getContext(); - - if (!(context instanceof Activity)) { - AdError adError = - new AdError(ERROR_CONTEXT_NOT_ACTIVITY, ERROR_MSG_NON_ACTIVITY, ADAPTER_ERROR_DOMAIN); - Log.w(TAG, adError.toString()); - mediationAdLoadCallback.onFailure(adError); - return; - } - Bundle serverParameters = mediationRewardedAdConfiguration.getServerParameters(); final String gameId = serverParameters.getString(UnityMediationAdapter.KEY_GAME_ID); final String placementId = serverParameters.getString(UnityMediationAdapter.KEY_PLACEMENT_ID);