Skip to content

Commit 07cc2b5

Browse files
Merge branch 'master' of github.com:mopub/mopub-android-mediation
2 parents 8b62ae4 + ea6e63c commit 07cc2b5

17 files changed

+75
-15
lines changed

AdMob/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
## Changelog
2+
* 17.0.0.2
3+
* Add a null check when calling AdMob's `isLoaded()` for rewarded video ads.
4+
25
* 17.0.0.1
36
* Fix a bug where AdMob's native ads disappear when scrolling through a ListView/RecyclerView using MoPub's Ad Placer technology.
47

AdMob/com/mopub/mobileads/GooglePlayServicesRewardedVideo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ protected void loadWithSdkInitialized(@NonNull Activity activity,
175175
new Handler(Looper.getMainLooper()).post(new Runnable() {
176176
@Override
177177
public void run() {
178-
if (mRewardedVideoAd.isLoaded()) {
178+
if (mRewardedVideoAd != null && mRewardedVideoAd.isLoaded()) {
179179
MoPubRewardedVideoManager
180180
.onRewardedVideoLoadSuccess(GooglePlayServicesRewardedVideo.class, mAdUnitId);
181181
} else {

FacebookAudienceNetwork/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
## Changelog
2+
3+
* 5.1.0.0
4+
* This version of the adapters has been certified with Facebook Audience Network 5.1.0
5+
* For all ad formats, add support to initialize Facebook Audience Network SDK at the time of the first ad request to Facebook Audience Network.
6+
27
* 5.0.1.0
38
* This version of the adapters has been certified with Facebook Audience Network 5.0.1.
49

FacebookAudienceNetwork/com/mopub/mobileads/FacebookBanner.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,20 @@
1111
import com.facebook.ads.AdSettings;
1212
import com.facebook.ads.AdSize;
1313
import com.facebook.ads.AdView;
14+
import com.facebook.ads.AudienceNetworkAds;
1415
import com.mopub.common.DataKeys;
1516
import com.mopub.common.MoPub;
1617
import com.mopub.common.logging.MoPubLog;
1718
import com.mopub.common.util.Views;
1819

1920
import java.util.Map;
21+
import java.util.concurrent.atomic.AtomicBoolean;
2022

2123
public class FacebookBanner extends CustomEventBanner implements AdListener {
2224
private static final String PLACEMENT_ID_KEY = "placement_id";
2325
private AdView mFacebookBanner;
2426
private CustomEventBannerListener mBannerListener;
27+
private static AtomicBoolean sIsInitialized = new AtomicBoolean(false);
2528

2629
/**
2730
* CustomEventBanner implementation
@@ -32,7 +35,9 @@ protected void loadBanner(final Context context,
3235
final CustomEventBannerListener customEventBannerListener,
3336
final Map<String, Object> localExtras,
3437
final Map<String, String> serverExtras) {
35-
38+
if(!sIsInitialized.getAndSet(true)) {
39+
AudienceNetworkAds.initialize(context);
40+
}
3641
setAutomaticImpressionAndClickTracking(false);
3742

3843
mBannerListener = customEventBannerListener;

FacebookAudienceNetwork/com/mopub/mobileads/FacebookInterstitial.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
import com.facebook.ads.Ad;
99
import com.facebook.ads.AdError;
1010
import com.facebook.ads.AdSettings;
11+
import com.facebook.ads.AudienceNetworkAds;
1112
import com.facebook.ads.InterstitialAd;
1213
import com.facebook.ads.InterstitialAdListener;
1314
import com.mopub.common.DataKeys;
1415
import com.mopub.common.MoPub;
1516
import com.mopub.common.logging.MoPubLog;
1617

1718
import java.util.Map;
19+
import java.util.concurrent.atomic.AtomicBoolean;
1820

1921
import static com.mopub.mobileads.MoPubErrorCode.EXPIRED;
2022

@@ -26,6 +28,7 @@ public class FacebookInterstitial extends CustomEventInterstitial implements Int
2628
@NonNull
2729
private Handler mHandler;
2830
private Runnable mAdExpiration;
31+
private static AtomicBoolean sIsInitialized = new AtomicBoolean(false);
2932

3033
public FacebookInterstitial() {
3134
mHandler = new Handler();
@@ -53,7 +56,9 @@ protected void loadInterstitial(final Context context,
5356
final CustomEventInterstitialListener customEventInterstitialListener,
5457
final Map<String, Object> localExtras,
5558
final Map<String, String> serverExtras) {
56-
59+
if(!sIsInitialized.getAndSet(true)) {
60+
AudienceNetworkAds.initialize(context);
61+
}
5762
setAutomaticImpressionAndClickTracking(false);
5863

5964
MoPubLog.d("Loading Facebook interstitial");

FacebookAudienceNetwork/com/mopub/mobileads/FacebookRewardedVideo.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.facebook.ads.Ad;
1010
import com.facebook.ads.AdError;
1111
import com.facebook.ads.AdSettings;
12+
import com.facebook.ads.AudienceNetworkAds;
1213
import com.facebook.ads.RewardedVideoAd;
1314
import com.facebook.ads.RewardedVideoAdListener;
1415
import com.mopub.common.DataKeys;
@@ -18,6 +19,7 @@
1819
import com.mopub.common.logging.MoPubLog;
1920

2021
import java.util.Map;
22+
import java.util.concurrent.atomic.AtomicBoolean;
2123

2224
import static com.mopub.mobileads.MoPubErrorCode.EXPIRED;
2325

@@ -31,6 +33,7 @@ public class FacebookRewardedVideo extends CustomEventRewardedVideo implements R
3133
@NonNull
3234
private Handler mHandler;
3335
private Runnable mAdExpiration;
36+
private static AtomicBoolean sIsInitialized = new AtomicBoolean(false);
3437

3538
public FacebookRewardedVideo() {
3639
mHandler = new Handler();
@@ -57,8 +60,11 @@ protected LifecycleListener getLifecycleListener() {
5760

5861
@Override
5962
protected boolean checkAndInitializeSdk(@NonNull Activity launcherActivity, @NonNull Map<String, Object> localExtras, @NonNull Map<String, String> serverExtras) throws Exception {
60-
// Facebook doesn't have a dedicated initialization call, so we return false and do nothing.
61-
return false;
63+
boolean requiresInitialization = !sIsInitialized.getAndSet(true);
64+
if(requiresInitialization) {
65+
AudienceNetworkAds.initialize(launcherActivity);
66+
}
67+
return requiresInitialization;
6268
}
6369

6470
@Override

FacebookAudienceNetwork/com/mopub/nativeads/FacebookNative.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.facebook.ads.Ad;
99
import com.facebook.ads.AdError;
1010
import com.facebook.ads.AdIconView;
11+
import com.facebook.ads.AudienceNetworkAds;
1112
import com.facebook.ads.MediaView;
1213
import com.facebook.ads.NativeAd;
1314
import com.facebook.ads.NativeAdListener;
@@ -19,6 +20,7 @@
1920
import java.util.HashMap;
2021
import java.util.List;
2122
import java.util.Map;
23+
import java.util.concurrent.atomic.AtomicBoolean;
2224

2325
/**
2426
* FacebookAdRenderer is also necessary in order to show video ads.
@@ -28,6 +30,7 @@
2830
*/
2931
public class FacebookNative extends CustomEventNative {
3032
private static final String PLACEMENT_ID_KEY = "placement_id";
33+
private static AtomicBoolean sIsInitialized = new AtomicBoolean(false);
3134

3235
// CustomEventNative implementation
3336
@Override
@@ -36,6 +39,9 @@ protected void loadNativeAd(final Context context,
3639
final Map<String, Object> localExtras,
3740
final Map<String, String> serverExtras) {
3841

42+
if(!sIsInitialized.getAndSet(true)) {
43+
AudienceNetworkAds.initialize(context);
44+
}
3945
final String placementId;
4046
if (extrasAreValid(serverExtras)) {
4147
placementId = serverExtras.get(PLACEMENT_ID_KEY);

Vungle/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
## Changelog
2+
* 6.3.24.0
3+
* This version of the adapters has been certified with Vungle 6.3.24.
4+
* Check if the passed Placement ID is a valid placement for the given App ID.
5+
26
* 6.3.17.1
37
* Update the placement ID returned in the `getAdNetworkId` API (used to generate server-side rewarded video callback URL) to be non-null, and avoid potential NullPointerExceptions.
48

@@ -19,4 +23,4 @@
1923
* This version of the adapters has been certified with Vungle 5.3.2.
2024

2125
* Initial Commit
22-
* Adapters moved from [mopub-android-sdk](https://github.com/mopub/mopub-android-sdk) to [mopub-android-mediation](https://github.com/mopub/mopub-android-mediation/)
26+
* Adapters moved from [mopub-android-sdk](https://github.com/mopub/mopub-android-sdk) to [mopub-android-mediation](https://github.com/mopub/mopub-android-mediation/)

Vungle/com/mopub/mobileads/VungleInterstitial.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ public VungleInterstitial() {
4949

5050
@Override
5151
protected void loadInterstitial(Context context,
52-
CustomEventInterstitialListener customEventInterstitialListener,
53-
Map<String, Object> localExtras,
54-
Map<String, String> serverExtras) {
52+
CustomEventInterstitialListener customEventInterstitialListener,
53+
Map<String, Object> localExtras,
54+
Map<String, String> serverExtras) {
5555
mCustomEventInterstitialListener = customEventInterstitialListener;
5656
mIsPlaying = false;
5757

@@ -147,6 +147,12 @@ private boolean validateIdsInServerExtras(Map<String, String> serverExtras) {
147147
isAllDataValid = false;
148148
}
149149

150+
if (serverExtras.containsKey(PLACEMENT_IDS_KEY)) {
151+
MoPubLog.w(INTERSTITIAL_TAG + "No need to set placement IDs " +
152+
"in MoPub dashboard with Vungle SDK version " +
153+
com.vungle.warren.BuildConfig.VERSION_NAME);
154+
}
155+
150156
return isAllDataValid;
151157
}
152158

Vungle/com/mopub/mobileads/VungleRewardedVideo.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,12 @@ protected void loadWithSdkInitialized(@NonNull final Activity activity, @NonNull
108108
}
109109

110110
if (sVungleRouter.isVungleInitialized()) {
111-
sVungleRouter.loadAdForPlacement(mPlacementId, mVungleRewardedRouterListener);
111+
if (sVungleRouter.isValidPlacement(mPlacementId)) {
112+
sVungleRouter.loadAdForPlacement(mPlacementId, mVungleRewardedRouterListener);
113+
} else {
114+
MoPubLog.d(REWARDED_TAG + "Invalid or Inactive Placement ID: " + mPlacementId);
115+
MoPubRewardedVideoManager.onRewardedVideoLoadFailure(VungleRewardedVideo.class, mPlacementId, MoPubErrorCode.ADAPTER_CONFIGURATION_ERROR);
116+
}
112117
} else {
113118
MoPubLog.d(REWARDED_TAG + "There should not be this case. loadWithSdkInitialized is called before the SDK starts initialization for Placement ID: " + mPlacementId);
114119
MoPubRewardedVideoManager.onRewardedVideoLoadFailure(VungleRewardedVideo.class, mPlacementId, MoPubErrorCode.ADAPTER_CONFIGURATION_ERROR);

0 commit comments

Comments
 (0)