Skip to content

Commit 8cfe620

Browse files
joshuajplagoneracopybara-github
authored andcommitted
Updating Meta Audience Network Android adapter to use updated nativeAdMapper API
PiperOrigin-RevId: 884610080
1 parent 785a765 commit 8cfe620

7 files changed

Lines changed: 38 additions & 34 deletions

File tree

ThirdPartyAdapters/meta/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#### Next Version
44
- Added property to build the adapter with GMA Next-Gen SDK dependency.
5+
- Updated native ad implementation to use the updated `NativeAdMapper` API.
56

67
#### Version 6.21.0.1
78
- Added support for forwarding the `tagForUnderAgeOfConsent` Google Mobile Ads

ThirdPartyAdapters/meta/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ buildscript {
99
mavenCentral()
1010
}
1111
dependencies {
12-
classpath 'com.android.tools.build:gradle:8.2.2'
12+
classpath 'com.android.tools.build:gradle:8.6.1'
1313
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
1414
// NOTE: Do not place your application dependencies here; they belong
1515
// in the individual module build.gradle files
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
#Thu Feb 27 09:59:21 PST 2025
1+
#Tue Mar 17 06:46:01 PST 2026
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
4+
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
56
zipStoreBase=GRADLE_USER_HOME
67
zipStorePath=wrapper/dists

ThirdPartyAdapters/meta/meta/src/main/java/com/google/ads/mediation/facebook/FacebookMediationAdapter.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import android.content.Context;
1818
import android.os.Bundle;
19+
import android.os.RemoteException;
1920
import android.text.TextUtils;
2021
import android.util.Log;
2122
import androidx.annotation.IntDef;
@@ -48,7 +49,7 @@
4849
import com.google.android.gms.ads.mediation.MediationRewardedAd;
4950
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback;
5051
import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration;
51-
import com.google.android.gms.ads.mediation.UnifiedNativeAdMapper;
52+
import com.google.android.gms.ads.mediation.NativeAdMapper;
5253
import com.google.android.gms.ads.mediation.rtb.RtbAdapter;
5354
import com.google.android.gms.ads.mediation.rtb.RtbSignalData;
5455
import com.google.android.gms.ads.mediation.rtb.SignalCallbacks;
@@ -279,9 +280,11 @@ public void loadRtbRewardedAd(
279280
}
280281

281282
@Override
282-
public void loadRtbNativeAd(@NonNull MediationNativeAdConfiguration mediationNativeAdConfiguration,
283-
@NonNull MediationAdLoadCallback<UnifiedNativeAdMapper, MediationNativeAdCallback>
284-
mediationAdLoadCallback) {
283+
public void loadRtbNativeAdMapper(
284+
@NonNull MediationNativeAdConfiguration mediationNativeAdConfiguration,
285+
@NonNull
286+
MediationAdLoadCallback<NativeAdMapper, MediationNativeAdCallback>
287+
mediationAdLoadCallback) {
285288
nativeAd = new FacebookRtbNativeAd(mediationAdLoadCallback, metaFactory);
286289
nativeAd.render(mediationNativeAdConfiguration);
287290
}
@@ -297,11 +300,9 @@ public void loadRtbRewardedInterstitialAd(
297300
rewardedInterstitialAd.render(mediationAdConfiguration);
298301
}
299302

300-
/**
301-
* Gets the Meta Audience Network placement ID.
302-
*/
303-
public static @Nullable
304-
String getPlacementID(@NonNull Bundle serverParameters) {
303+
/** Gets the Meta Audience Network placement ID. */
304+
@Nullable
305+
public static String getPlacementID(@NonNull Bundle serverParameters) {
305306
// Bidding uses a different key for Placement ID than waterfall mediation. Try the
306307
// bidding key first.
307308
String placementId = serverParameters.getString(RTB_PLACEMENT_PARAMETER);

ThirdPartyAdapters/meta/meta/src/main/java/com/google/ads/mediation/facebook/rtb/FacebookRtbNativeAd.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,24 @@
5353
import com.google.android.gms.ads.mediation.MediationAdLoadCallback;
5454
import com.google.android.gms.ads.mediation.MediationNativeAdCallback;
5555
import com.google.android.gms.ads.mediation.MediationNativeAdConfiguration;
56-
import com.google.android.gms.ads.mediation.UnifiedNativeAdMapper;
56+
import com.google.android.gms.ads.mediation.NativeAdMapper;
57+
import com.google.android.gms.ads.nativead.NativeAd.Image;
5758
import java.lang.ref.WeakReference;
5859
import java.util.ArrayList;
5960
import java.util.List;
6061
import java.util.Map;
6162

62-
public class FacebookRtbNativeAd extends UnifiedNativeAdMapper {
63+
public class FacebookRtbNativeAd extends NativeAdMapper {
6364

64-
private final MediationAdLoadCallback<UnifiedNativeAdMapper, MediationNativeAdCallback> callback;
65+
private final MediationAdLoadCallback<NativeAdMapper, MediationNativeAdCallback> callback;
6566
private NativeAdBase nativeAdBase;
6667
private MediationNativeAdCallback nativeAdCallback;
6768
private MediaView mediaView;
6869

6970
private final MetaFactory metaFactory;
7071

7172
public FacebookRtbNativeAd(
72-
@NonNull MediationAdLoadCallback<UnifiedNativeAdMapper, MediationNativeAdCallback> callback,
73+
@NonNull MediationAdLoadCallback<NativeAdMapper, MediationNativeAdCallback> callback,
7374
MetaFactory metaFactory) {
7475
this.callback = callback;
7576
this.metaFactory = metaFactory;
@@ -212,7 +213,7 @@ public void mapNativeAd(
212213
// action).
213214
setHeadline(nativeAdBase.getAdHeadline());
214215
if (nativeAdBase.getAdCoverImage() != null) {
215-
List<com.google.android.gms.ads.formats.NativeAd.Image> images = new ArrayList<>();
216+
List<Image> images = new ArrayList<>();
216217
images.add(
217218
new FacebookAdapterNativeAdImage(Uri.parse(nativeAdBase.getAdCoverImage().getUrl())));
218219
setImages(images);
@@ -314,7 +315,9 @@ private boolean containsRequiredFieldsForUnifiedNativeAd(NativeAdBase nativeAd)
314315
}
315316

316317
@Override
317-
public void trackViews(@NonNull View view, @NonNull Map<String, View> clickableAssetViews,
318+
public void trackViews(
319+
@NonNull View view,
320+
@NonNull Map<String, View> clickableAssetViews,
318321
@NonNull Map<String, View> nonClickableAssetViews) {
319322

320323
// Meta Audience Network does its own click handling.
@@ -358,7 +361,6 @@ public void trackViews(@NonNull View view, @NonNull Map<String, View> clickableA
358361
}
359362
}
360363

361-
362364
@Override
363365
public void untrackView(@NonNull View view) {
364366
if (nativeAdBase != null) {
@@ -367,8 +369,7 @@ public void untrackView(@NonNull View view) {
367369
super.untrackView(view);
368370
}
369371

370-
private class FacebookAdapterNativeAdImage extends
371-
com.google.android.gms.ads.formats.NativeAd.Image {
372+
private class FacebookAdapterNativeAdImage extends Image {
372373

373374
/** A drawable for the Image. */
374375
private Drawable drawable;

ThirdPartyAdapters/meta/meta/src/test/kotlin/com/google/ads/mediation/facebook/FacebookMediationAdapterTest.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import com.google.ads.mediation.adaptertestkit.createMediationRewardedAdConfigur
3030
import com.google.ads.mediation.adaptertestkit.loadRtbAppOpenAdWithFailure
3131
import com.google.ads.mediation.adaptertestkit.loadRtbBannerAdWithFailure
3232
import com.google.ads.mediation.adaptertestkit.loadRtbInterstitialAdWithFailure
33-
import com.google.ads.mediation.adaptertestkit.loadRtbNativeAdWithFailure
33+
import com.google.ads.mediation.adaptertestkit.loadRtbNativeAdMapperWithFailure
3434
import com.google.ads.mediation.adaptertestkit.loadRtbRewardedAdWithFailure
3535
import com.google.ads.mediation.adaptertestkit.loadRtbRewardedInterstitialAdWithFailure
3636
import com.google.ads.mediation.adaptertestkit.mediationAdapterInitializeVerifyFailure
@@ -57,7 +57,7 @@ import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback
5757
import com.google.android.gms.ads.mediation.MediationNativeAdCallback
5858
import com.google.android.gms.ads.mediation.MediationRewardedAd
5959
import com.google.android.gms.ads.mediation.MediationRewardedAdCallback
60-
import com.google.android.gms.ads.mediation.UnifiedNativeAdMapper
60+
import com.google.android.gms.ads.mediation.NativeAdMapper
6161
import com.google.android.gms.ads.mediation.rtb.RtbSignalData
6262
import com.google.android.gms.ads.mediation.rtb.SignalCallbacks
6363
import com.google.common.truth.Truth.assertThat
@@ -139,7 +139,7 @@ class FacebookMediationAdapterTest {
139139
on { buildLoadAdConfig() } doReturn metaRewardedAdLoadConfigBuilder
140140
}
141141
private val mockNativeAdLoadCallback:
142-
MediationAdLoadCallback<UnifiedNativeAdMapper, MediationNativeAdCallback> =
142+
MediationAdLoadCallback<NativeAdMapper, MediationNativeAdCallback> =
143143
mock()
144144
private val metaNativeAdLoadConfig: NativeAdBase.NativeLoadAdConfig = mock()
145145
private val metaNativeAdLoadConfigBuilder: NativeAdBase.NativeAdLoadConfigBuilder = mock {
@@ -679,7 +679,7 @@ class FacebookMediationAdapterTest {
679679
// region Native Ad load tests
680680

681681
@Test
682-
fun loadRtbNativeAd_withoutPlacementId_invokesOnFailureCallback() {
682+
fun loadRtbNativeAdMapper_withoutPlacementId_invokesOnFailureCallback() {
683683
val mediationNativeAdConfiguration = createMediationNativeAdConfiguration(context = context)
684684
val expectedError =
685685
AdError(
@@ -688,15 +688,15 @@ class FacebookMediationAdapterTest {
688688
FacebookMediationAdapter.ERROR_DOMAIN,
689689
)
690690

691-
facebookMediationAdapter.loadRtbNativeAdWithFailure(
691+
facebookMediationAdapter.loadRtbNativeAdMapperWithFailure(
692692
mediationNativeAdConfiguration,
693693
mockNativeAdLoadCallback,
694694
expectedError,
695695
)
696696
}
697697

698698
@Test
699-
fun loadRtbNativeAd_emptyPlacementId_invokesOnFailureCallback() {
699+
fun loadRtbNativeAdMapper_emptyPlacementId_invokesOnFailureCallback() {
700700
val serverParameters = bundleOf(RTB_PLACEMENT_PARAMETER to "")
701701
val mediationNativeAdConfiguration =
702702
createMediationNativeAdConfiguration(context = context, serverParameters = serverParameters)
@@ -707,15 +707,15 @@ class FacebookMediationAdapterTest {
707707
FacebookMediationAdapter.ERROR_DOMAIN,
708708
)
709709

710-
facebookMediationAdapter.loadRtbNativeAdWithFailure(
710+
facebookMediationAdapter.loadRtbNativeAdMapperWithFailure(
711711
mediationNativeAdConfiguration,
712712
mockNativeAdLoadCallback,
713713
expectedError,
714714
)
715715
}
716716

717717
@Test
718-
fun loadRtbNativeAd_errorCreatingNativeAdBase_invokesOnFailureCallback() {
718+
fun loadRtbNativeAdMapper_errorCreatingNativeAdBase_invokesOnFailureCallback() {
719719
val serverParameters =
720720
bundleOf(RTB_PLACEMENT_PARAMETER to AdapterTestKitConstants.TEST_PLACEMENT_ID)
721721
val mediationNativeAdConfiguration =
@@ -730,7 +730,7 @@ class FacebookMediationAdapterTest {
730730
mockStatic(NativeAdBase::class.java).use {
731731
whenever(fromBidPayload(any(), any(), any())) doThrow exception
732732

733-
facebookMediationAdapter.loadRtbNativeAdWithFailure(
733+
facebookMediationAdapter.loadRtbNativeAdMapperWithFailure(
734734
mediationNativeAdConfiguration,
735735
mockNativeAdLoadCallback,
736736
expectedAdError,
@@ -739,7 +739,7 @@ class FacebookMediationAdapterTest {
739739
}
740740

741741
@Test
742-
fun loadRtbNativeAd_loadsAd() {
742+
fun loadRtbNativeAdMapper_loadsAd() {
743743
AdSettings.setMixedAudience(false)
744744
val serverParameters =
745745
bundleOf(RTB_PLACEMENT_PARAMETER to AdapterTestKitConstants.TEST_PLACEMENT_ID)
@@ -754,7 +754,7 @@ class FacebookMediationAdapterTest {
754754
mockStatic(NativeAdBase::class.java).use {
755755
whenever(fromBidPayload(any(), any(), any())) doReturn metaNativeAd
756756

757-
facebookMediationAdapter.loadRtbNativeAd(
757+
facebookMediationAdapter.loadRtbNativeAdMapper(
758758
mediationNativeAdConfiguration,
759759
mockNativeAdLoadCallback,
760760
)

ThirdPartyAdapters/meta/meta/src/test/kotlin/com/google/ads/mediation/facebook/rtb/FacebookRtbNativeAdTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import com.google.android.gms.ads.AdError
2626
import com.google.android.gms.ads.formats.UnifiedNativeAdAssetNames.ASSET_ICON
2727
import com.google.android.gms.ads.mediation.MediationAdLoadCallback
2828
import com.google.android.gms.ads.mediation.MediationNativeAdCallback
29-
import com.google.android.gms.ads.mediation.UnifiedNativeAdMapper
29+
import com.google.android.gms.ads.mediation.NativeAdMapper
3030
import com.google.common.truth.Truth.assertThat
3131
import org.junit.Before
3232
import org.junit.Test
@@ -66,7 +66,7 @@ class FacebookRtbNativeAdTest {
6666
)
6767
private val nativeAdCallback = mock<MediationNativeAdCallback>()
6868
private val nativeAdLoadCallback:
69-
MediationAdLoadCallback<UnifiedNativeAdMapper, MediationNativeAdCallback> =
69+
MediationAdLoadCallback<NativeAdMapper, MediationNativeAdCallback> =
7070
mock {
7171
on { onSuccess(any()) } doReturn nativeAdCallback
7272
}

0 commit comments

Comments
 (0)