mirror of
https://github.com/status-im/react-native-firebase.git
synced 2026-09-02 07:01:14 +00:00
[admob][android] Implement VideoOptions + AdRequest into all advert types
This commit is contained in:
@@ -9,22 +9,10 @@ import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
import io.invertase.firebase.admob.RNFirebaseAdMobBanner;
|
||||
import io.invertase.firebase.auth.RNFirebaseAuth;
|
||||
import io.invertase.firebase.config.RNFirebaseRemoteConfig;
|
||||
import io.invertase.firebase.storage.RNFirebaseStorage;
|
||||
import io.invertase.firebase.database.RNFirebaseDatabase;
|
||||
import io.invertase.firebase.analytics.RNFirebaseAnalytics;
|
||||
import io.invertase.firebase.crash.RNFirebaseCrash;
|
||||
import io.invertase.firebase.messaging.RNFirebaseMessaging;
|
||||
import io.invertase.firebase.perf.RNFirebasePerformance;
|
||||
import io.invertase.firebase.admob.RNFirebaseAdMob;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class RNFirebasePackage implements ReactPackage {
|
||||
private Context mContext;
|
||||
@@ -61,8 +49,6 @@ public class RNFirebasePackage implements ReactPackage {
|
||||
*/
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
return Arrays.<ViewManager>asList(
|
||||
new RNFirebaseAdMobBanner()
|
||||
);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.util.Map;
|
||||
|
||||
public class RNFirebaseAdMob extends ReactContextBaseJavaModule {
|
||||
|
||||
private static final String TAG = "RNFirebaseAdmob";
|
||||
private static final String TAG = "RNFirebaseAdMob";
|
||||
|
||||
ReactApplicationContext getContext() {
|
||||
return getReactApplicationContext();
|
||||
@@ -30,7 +30,8 @@ public class RNFirebaseAdMob extends ReactContextBaseJavaModule {
|
||||
}
|
||||
|
||||
private HashMap<String, RNFirebaseAdmobInterstitial> interstitials = new HashMap<>();
|
||||
private HashMap<String, RNFirebaseRewardedVideo> rewardedVideos = new HashMap<>();
|
||||
private HashMap<String, RNFirebaseAdMobRewardedVideo> rewardedVideos = new HashMap<>();
|
||||
private HashMap<String, RNFirebaseAdMobNativeExpress> nativeExpressAds = new HashMap<>();
|
||||
|
||||
public RNFirebaseAdMob(ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
@@ -45,7 +46,7 @@ public class RNFirebaseAdMob extends ReactContextBaseJavaModule {
|
||||
@ReactMethod
|
||||
public void interstitialLoadAd(String adUnit, ReadableMap request) {
|
||||
RNFirebaseAdmobInterstitial interstitial = getOrCreateInterstitial(adUnit);
|
||||
interstitial.loadAd(buildRequest(request).build());
|
||||
interstitial.loadAd(RNFirebaseAdMobUtils.buildRequest(request).build());
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
@@ -56,13 +57,13 @@ public class RNFirebaseAdMob extends ReactContextBaseJavaModule {
|
||||
|
||||
@ReactMethod
|
||||
public void rewardedVideoLoadAd(String adUnit, ReadableMap request) {
|
||||
RNFirebaseRewardedVideo rewardedVideo = getOrCreateRewardedVideo(adUnit);
|
||||
rewardedVideo.loadAd(buildRequest(request).build());
|
||||
RNFirebaseAdMobRewardedVideo rewardedVideo = getOrCreateRewardedVideo(adUnit);
|
||||
rewardedVideo.loadAd(RNFirebaseAdMobUtils.buildRequest(request).build());
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void rewardedVideoShowAd(String adUnit) {
|
||||
RNFirebaseRewardedVideo rewardedVideo = getOrCreateRewardedVideo(adUnit);
|
||||
RNFirebaseAdMobRewardedVideo rewardedVideo = getOrCreateRewardedVideo(adUnit);
|
||||
rewardedVideo.show();
|
||||
}
|
||||
|
||||
@@ -85,11 +86,11 @@ public class RNFirebaseAdMob extends ReactContextBaseJavaModule {
|
||||
* @param adUnit
|
||||
* @return
|
||||
*/
|
||||
private RNFirebaseRewardedVideo getOrCreateRewardedVideo(String adUnit) {
|
||||
private RNFirebaseAdMobRewardedVideo getOrCreateRewardedVideo(String adUnit) {
|
||||
if (rewardedVideos.containsKey(adUnit)) {
|
||||
return rewardedVideos.get(adUnit);
|
||||
}
|
||||
RNFirebaseRewardedVideo rewardedVideo = new RNFirebaseRewardedVideo(adUnit, this);
|
||||
RNFirebaseAdMobRewardedVideo rewardedVideo = new RNFirebaseAdMobRewardedVideo(adUnit, this);
|
||||
rewardedVideos.put(adUnit, rewardedVideo);
|
||||
return rewardedVideo;
|
||||
}
|
||||
@@ -100,21 +101,4 @@ public class RNFirebaseAdMob extends ReactContextBaseJavaModule {
|
||||
constants.put("DEVICE_ID_EMULATOR", AdRequest.DEVICE_ID_EMULATOR);
|
||||
return constants;
|
||||
}
|
||||
|
||||
AdRequest.Builder buildRequest(ReadableMap request) {
|
||||
AdRequest.Builder requestBuilder = new AdRequest.Builder();
|
||||
|
||||
if (request.hasKey("testDevice")) {
|
||||
requestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
|
||||
}
|
||||
|
||||
ReadableArray keywords = request.getArray("keywords");
|
||||
List<Object> keywordsList = Utils.recursivelyDeconstructReadableArray(keywords);
|
||||
|
||||
for (Object word : keywordsList) {
|
||||
requestBuilder.addKeyword((String) word);
|
||||
}
|
||||
|
||||
return requestBuilder;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.support.annotation.Nullable;
|
||||
import android.view.View;
|
||||
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.facebook.react.common.MapBuilder;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
@@ -16,8 +17,11 @@ import com.google.android.gms.ads.AdListener;
|
||||
import com.google.android.gms.ads.AdRequest;
|
||||
import com.google.android.gms.ads.AdSize;
|
||||
import com.google.android.gms.ads.AdView;
|
||||
import com.google.android.gms.ads.NativeExpressAdView;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> implements View.OnLayoutChangeListener {
|
||||
|
||||
@@ -30,7 +34,8 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
EVENT_AD_FAILED_TO_LOAD("onAdFailedToLoad"),
|
||||
EVENT_AD_OPENED("onAdOpened"),
|
||||
EVENT_AD_CLOSED("onAdClosed"),
|
||||
EVENT_AD_LEFT_APPLICATION("onAdLeftApplication");
|
||||
EVENT_AD_LEFT_APPLICATION("onAdLeftApplication"),
|
||||
EVENT_AD_VIDEO_CONTENT("hasVideoContent");
|
||||
|
||||
private final String event;
|
||||
|
||||
@@ -47,8 +52,8 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
private ThemedReactContext context;
|
||||
private ReactViewGroup viewGroup;
|
||||
private RCTEventEmitter emitter;
|
||||
private AdRequest.Builder request = null;
|
||||
private String size;
|
||||
private Boolean testing = false;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
@@ -66,10 +71,17 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
viewGroup = new ReactViewGroup(themedReactContext);
|
||||
emitter = themedReactContext.getJSModule(RCTEventEmitter.class);
|
||||
|
||||
attachAdViewToViewGroup();
|
||||
AdView adView = new AdView(context);
|
||||
viewGroup.addView(adView);
|
||||
setAdListener();
|
||||
|
||||
return viewGroup;
|
||||
}
|
||||
|
||||
AdView getAdView() {
|
||||
return (AdView) viewGroup.getChildAt(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Declare custom events
|
||||
* @return
|
||||
@@ -108,19 +120,19 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
*/
|
||||
@ReactProp(name = "unitId")
|
||||
public void setUnitId(final ReactViewGroup view, final String value) {
|
||||
AdView adViewView = (AdView) view.getChildAt(0);
|
||||
AdView adViewView = getAdView();
|
||||
adViewView.setAdUnitId(value);
|
||||
requestAd();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle testing prop
|
||||
* Handle request prop
|
||||
* @param view
|
||||
* @param value
|
||||
* @param adRequest
|
||||
*/
|
||||
@ReactProp(name = "testing")
|
||||
public void setUnitId(final ReactViewGroup view, final Boolean value) {
|
||||
testing = value;
|
||||
@ReactProp(name = "request")
|
||||
public void setRequest(final ReactViewGroup view, final ReadableMap adRequest) {
|
||||
request = RNFirebaseAdMobUtils.buildRequest(adRequest);
|
||||
requestAd();
|
||||
}
|
||||
|
||||
@@ -135,7 +147,7 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
size = value;
|
||||
}
|
||||
|
||||
AdSize adSize = propToAdSize(size.toUpperCase());
|
||||
AdSize adSize = RNFirebaseAdMobUtils.stringToAdSize(size);
|
||||
AdView adViewView = (AdView) view.getChildAt(0);
|
||||
adViewView.setAdSize(adSize);
|
||||
|
||||
@@ -159,49 +171,17 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
requestAd();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new instance of the AdView and attaches it to the
|
||||
* current ReactViewGroup
|
||||
*/
|
||||
void attachAdViewToViewGroup() {
|
||||
removeAdFromViewGroup();
|
||||
|
||||
final AdView adView = new AdView(context);
|
||||
viewGroup.addView(adView);
|
||||
setAdListener();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the AdView from the ViewGroup
|
||||
*/
|
||||
void removeAdFromViewGroup() {
|
||||
AdView adView = (AdView) viewGroup.getChildAt(0);
|
||||
viewGroup.removeAllViews();
|
||||
|
||||
if (adView != null) {
|
||||
adView.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a new ad into a viewGroup
|
||||
*/
|
||||
void requestAd() {
|
||||
AdView adView = (AdView) viewGroup.getChildAt(0);
|
||||
AdView adView = getAdView();
|
||||
|
||||
if (adView.getAdSize() == null || adView.getAdUnitId() == null) {
|
||||
if (adView.getAdSize() == null || adView.getAdUnitId() == null || request == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
|
||||
|
||||
// If the prop testing is set, assign the emulators device ID
|
||||
if (testing) {
|
||||
adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
|
||||
}
|
||||
|
||||
AdRequest adRequest = adRequestBuilder.build();
|
||||
AdRequest adRequest = request.build();
|
||||
adView.loadAd(adRequest);
|
||||
}
|
||||
|
||||
@@ -209,7 +189,7 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
* Listen to Ad events
|
||||
*/
|
||||
void setAdListener() {
|
||||
final AdView adView = (AdView) viewGroup.getChildAt(0);
|
||||
final AdView adView = getAdView();
|
||||
|
||||
adView.setAdListener(new AdListener() {
|
||||
@Override
|
||||
@@ -223,7 +203,16 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
adView.measure(width, height);
|
||||
adView.layout(left, top, left + width, top + height);
|
||||
|
||||
sendEvent(Events.EVENT_AD_LOADED.toString(), null);
|
||||
WritableMap payload = Arguments.createMap();
|
||||
|
||||
payload.putBoolean(RNFirebaseAdMobNativeExpress.Events.EVENT_AD_VIDEO_CONTENT.toString(), false);
|
||||
payload.putInt("width", width);
|
||||
payload.putInt("height", height);
|
||||
payload.putInt("left", left);
|
||||
payload.putInt("top", top);
|
||||
|
||||
|
||||
sendEvent(Events.EVENT_AD_LOADED.toString(), payload);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -264,27 +253,4 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||
|
||||
emitter.receiveEvent(viewGroup.getId(), BANNER_EVENT, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Map the size prop to the AdSize
|
||||
* @param prop
|
||||
* @return
|
||||
*/
|
||||
AdSize propToAdSize(String prop) {
|
||||
switch (prop) {
|
||||
default:
|
||||
case "BANNER":
|
||||
return AdSize.BANNER;
|
||||
case "LARGE_BANNER":
|
||||
return AdSize.LARGE_BANNER;
|
||||
case "MEDIUM_RECTANGLE":
|
||||
return AdSize.MEDIUM_RECTANGLE;
|
||||
case "FULL_BANNER":
|
||||
return AdSize.FULL_BANNER;
|
||||
case "LEADERBOARD":
|
||||
return AdSize.LEADERBOARD;
|
||||
case "SMART_BANNER":
|
||||
return AdSize.SMART_BANNER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,8 @@ public class RNFirebaseAdMobPackage implements ReactPackage {
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
return Arrays.<ViewManager>asList(
|
||||
new RNFirebaseAdMobBanner()
|
||||
new RNFirebaseAdMobBanner(),
|
||||
new RNFirebaseAdMobNativeExpress()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
package io.invertase.firebase.admob;
|
||||
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.google.android.gms.ads.AdRequest;
|
||||
import com.google.android.gms.ads.AdSize;
|
||||
import com.google.android.gms.ads.VideoOptions;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import io.invertase.firebase.Utils;
|
||||
|
||||
class RNFirebaseAdMobUtils {
|
||||
|
||||
@@ -36,4 +46,93 @@ class RNFirebaseAdMobUtils {
|
||||
return map;
|
||||
}
|
||||
|
||||
static AdRequest.Builder buildRequest(ReadableMap request) {
|
||||
AdRequest.Builder requestBuilder = new AdRequest.Builder();
|
||||
|
||||
if (request.hasKey("testDevice")) {
|
||||
requestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
|
||||
}
|
||||
|
||||
if (request.hasKey("isDesignedForFamilies")) {
|
||||
requestBuilder.setIsDesignedForFamilies(request.getBoolean("isDesignedForFamilies"));
|
||||
}
|
||||
|
||||
if (request.hasKey("tagForChildDirectedTreatment")) {
|
||||
requestBuilder.tagForChildDirectedTreatment(request.getBoolean("tagForChildDirectedTreatment"));
|
||||
}
|
||||
|
||||
if (request.hasKey("contentUrl")) {
|
||||
requestBuilder.setContentUrl(request.getString("setContentUrl"));
|
||||
}
|
||||
|
||||
if (request.hasKey("requestAgent")) {
|
||||
requestBuilder.setRequestAgent(request.getString("requestAgent"));
|
||||
}
|
||||
|
||||
if (request.hasKey("gender")) {
|
||||
String gender = request.getString("gender");
|
||||
switch (gender) {
|
||||
case "male":
|
||||
requestBuilder.setGender(AdRequest.GENDER_MALE);
|
||||
break;
|
||||
case "female":
|
||||
requestBuilder.setGender(AdRequest.GENDER_FEMALE);
|
||||
break;
|
||||
case "unknown":
|
||||
requestBuilder.setGender(AdRequest.GENDER_UNKNOWN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ReadableArray keywords = request.getArray("keywords");
|
||||
List<Object> keywordsList = Utils.recursivelyDeconstructReadableArray(keywords);
|
||||
|
||||
for (Object word : keywordsList) {
|
||||
requestBuilder.addKeyword((String) word);
|
||||
}
|
||||
|
||||
return requestBuilder;
|
||||
}
|
||||
|
||||
static VideoOptions.Builder buildVideoOptions(ReadableMap options) {
|
||||
VideoOptions.Builder optionsBuilder = new VideoOptions.Builder();
|
||||
|
||||
// Default true
|
||||
optionsBuilder.setStartMuted(options.getBoolean("startMuted"));
|
||||
|
||||
return optionsBuilder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map the size prop to the AdSize
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
static AdSize stringToAdSize(String value) {
|
||||
Pattern pattern = Pattern.compile("([0-9]+)x([0-9]+)");
|
||||
Matcher matcher = pattern.matcher(value);
|
||||
|
||||
// If size is "valXval"
|
||||
if (matcher.find()) {
|
||||
int width = Integer.parseInt(matcher.group(1));
|
||||
int height = Integer.parseInt(matcher.group(2));
|
||||
return new AdSize(width, height);
|
||||
}
|
||||
|
||||
switch (value.toUpperCase()) {
|
||||
default:
|
||||
case "BANNER":
|
||||
return AdSize.BANNER;
|
||||
case "LARGE_BANNER":
|
||||
return AdSize.LARGE_BANNER;
|
||||
case "MEDIUM_RECTANGLE":
|
||||
return AdSize.MEDIUM_RECTANGLE;
|
||||
case "FULL_BANNER":
|
||||
return AdSize.FULL_BANNER;
|
||||
case "LEADERBOARD":
|
||||
return AdSize.LEADERBOARD;
|
||||
case "SMART_BANNER":
|
||||
return AdSize.SMART_BANNER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
package io.invertase.firebase.admob;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
import com.google.android.gms.ads.AdRequest;
|
||||
import com.google.android.gms.ads.MobileAds;
|
||||
import com.google.android.gms.ads.reward.RewardItem;
|
||||
import com.google.android.gms.ads.reward.RewardedVideoAd;
|
||||
import com.google.android.gms.ads.reward.RewardedVideoAdListener;
|
||||
|
||||
import io.invertase.firebase.Utils;
|
||||
|
||||
public class RNFirebaseRewardedVideo implements RewardedVideoAdListener {
|
||||
|
||||
private RewardedVideoAd mAd;
|
||||
private String adUnit;
|
||||
private RNFirebaseAdMob adMob;
|
||||
private RewardedVideoAd rewardedVideo;
|
||||
|
||||
RNFirebaseRewardedVideo(final String adUnitString, final RNFirebaseAdMob adMobInstance) {
|
||||
adUnit = adUnitString;
|
||||
adMob = adMobInstance;
|
||||
|
||||
rewardedVideo = MobileAds.getRewardedVideoAdInstance(adMob.getContext());
|
||||
|
||||
Activity activity = adMob.getActivity();
|
||||
final RNFirebaseRewardedVideo _this = this;
|
||||
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
rewardedVideo.setRewardedVideoAdListener(_this);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load an Ad with a AdRequest instance
|
||||
*
|
||||
* @param adRequest
|
||||
*/
|
||||
void loadAd(final AdRequest adRequest) {
|
||||
Activity activity = adMob.getActivity();
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
rewardedVideo.loadAd(adUnit, adRequest);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the loaded interstitial, if it's loaded
|
||||
*/
|
||||
void show() {
|
||||
Activity activity = adMob.getActivity();
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (rewardedVideo.isLoaded()) {
|
||||
rewardedVideo.show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewarded(RewardItem reward) {
|
||||
WritableMap payload = Arguments.createMap();
|
||||
payload.putInt("amount", reward.getAmount());
|
||||
payload.putString("type", reward.getType());
|
||||
sendEvent("onRewarded", payload);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoAdLeftApplication() {
|
||||
sendEvent("onAdLeftApplication", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoAdClosed() {
|
||||
sendEvent("onAdClosed", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoAdFailedToLoad(int errorCode) {
|
||||
WritableMap payload = RNFirebaseAdMobUtils.errorCodeToMap(errorCode);
|
||||
sendEvent("onAdFailedToLoad", payload);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoAdLoaded() {
|
||||
sendEvent("onAdLoaded", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoAdOpened() {
|
||||
sendEvent("onAdOpened", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoStarted() {
|
||||
sendEvent("onRewardedVideoStarted", null);
|
||||
}
|
||||
|
||||
// TODO onResume etc??? https://developers.google.com/admob/android/rewarded-video
|
||||
|
||||
/**
|
||||
* Send a native event over the bridge with a type and optional payload
|
||||
*
|
||||
* @param type
|
||||
* @param payload
|
||||
*/
|
||||
void sendEvent(String type, final @Nullable WritableMap payload) {
|
||||
WritableMap map = Arguments.createMap();
|
||||
map.putString("type", type);
|
||||
map.putString("adUnit", adUnit);
|
||||
|
||||
if (payload != null) {
|
||||
map.putMap("payload", payload);
|
||||
}
|
||||
|
||||
Utils.sendEvent(adMob.getContext(), "rewarded_video_event", map);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user