[admob][android] Handle testing prop on banner component
This commit is contained in:
parent
b53c208911
commit
cf18f85720
|
@ -1,7 +1,6 @@
|
||||||
package io.invertase.firebase.admob;
|
package io.invertase.firebase.admob;
|
||||||
|
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.facebook.react.bridge.Arguments;
|
import com.facebook.react.bridge.Arguments;
|
||||||
|
@ -17,11 +16,9 @@ import com.google.android.gms.ads.AdListener;
|
||||||
import com.google.android.gms.ads.AdRequest;
|
import com.google.android.gms.ads.AdRequest;
|
||||||
import com.google.android.gms.ads.AdSize;
|
import com.google.android.gms.ads.AdSize;
|
||||||
import com.google.android.gms.ads.AdView;
|
import com.google.android.gms.ads.AdView;
|
||||||
import com.google.android.gms.ads.MobileAds;
|
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> implements View.OnLayoutChangeListener {
|
public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> implements View.OnLayoutChangeListener {
|
||||||
|
|
||||||
public static final String REACT_CLASS = "RNFirebaseAdMobBanner";
|
public static final String REACT_CLASS = "RNFirebaseAdMobBanner";
|
||||||
|
@ -51,6 +48,7 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
private ReactViewGroup viewGroup;
|
private ReactViewGroup viewGroup;
|
||||||
private RCTEventEmitter emitter;
|
private RCTEventEmitter emitter;
|
||||||
private String size;
|
private String size;
|
||||||
|
private Boolean testing = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
@ -69,7 +67,6 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
emitter = themedReactContext.getJSModule(RCTEventEmitter.class);
|
emitter = themedReactContext.getJSModule(RCTEventEmitter.class);
|
||||||
|
|
||||||
attachAdViewToViewGroup();
|
attachAdViewToViewGroup();
|
||||||
|
|
||||||
return viewGroup;
|
return viewGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +95,6 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onLayoutChange(View view, final int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
public void onLayoutChange(View view, final int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
||||||
Log.d("Ads", "onLayoutChange");
|
|
||||||
// If the view has changed at all, recalculate what banner we need
|
// If the view has changed at all, recalculate what banner we need
|
||||||
if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) {
|
if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) {
|
||||||
setSize(viewGroup, null);
|
setSize(viewGroup, null);
|
||||||
|
@ -108,14 +104,23 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
/**
|
/**
|
||||||
* Handle unitId prop
|
* Handle unitId prop
|
||||||
* @param view
|
* @param view
|
||||||
* @param unitId
|
* @param value
|
||||||
*/
|
*/
|
||||||
@ReactProp(name = "unitId")
|
@ReactProp(name = "unitId")
|
||||||
public void setUnitId(final ReactViewGroup view, final String unitId) {
|
public void setUnitId(final ReactViewGroup view, final String value) {
|
||||||
Log.d("Ads", "Prop unitId something " + unitId);
|
|
||||||
|
|
||||||
AdView adViewView = (AdView) view.getChildAt(0);
|
AdView adViewView = (AdView) view.getChildAt(0);
|
||||||
adViewView.setAdUnitId(unitId);
|
adViewView.setAdUnitId(value);
|
||||||
|
requestAd();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle testing prop
|
||||||
|
* @param view
|
||||||
|
* @param value
|
||||||
|
*/
|
||||||
|
@ReactProp(name = "testing")
|
||||||
|
public void setUnitId(final ReactViewGroup view, final Boolean value) {
|
||||||
|
testing = value;
|
||||||
requestAd();
|
requestAd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,8 +136,6 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
}
|
}
|
||||||
|
|
||||||
AdSize adSize = propToAdSize(size.toUpperCase());
|
AdSize adSize = propToAdSize(size.toUpperCase());
|
||||||
Log.d("Ads", "Prop size something " + adSize.toString());
|
|
||||||
|
|
||||||
AdView adViewView = (AdView) view.getChildAt(0);
|
AdView adViewView = (AdView) view.getChildAt(0);
|
||||||
adViewView.setAdSize(adSize);
|
adViewView.setAdSize(adSize);
|
||||||
|
|
||||||
|
@ -192,7 +195,12 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
}
|
}
|
||||||
|
|
||||||
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
|
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
|
||||||
adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
|
|
||||||
|
// 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 = adRequestBuilder.build();
|
||||||
adView.loadAd(adRequest);
|
adView.loadAd(adRequest);
|
||||||
}
|
}
|
||||||
|
@ -220,28 +228,7 @@ public class RNFirebaseAdMobBanner extends SimpleViewManager<ReactViewGroup> imp
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAdFailedToLoad(int errorCode) {
|
public void onAdFailedToLoad(int errorCode) {
|
||||||
WritableMap payload = Arguments.createMap();
|
WritableMap payload = RNFirebaseAdMobUtils.errorCodeToMap(errorCode);
|
||||||
|
|
||||||
// TODO Error code converter
|
|
||||||
switch (errorCode) {
|
|
||||||
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
|
|
||||||
payload.putString("code", "admob/error-code-internal-error");
|
|
||||||
payload.putString("message", "Something happened internally; for instance, an invalid response was received from the ad server.");
|
|
||||||
break;
|
|
||||||
case AdRequest.ERROR_CODE_INVALID_REQUEST:
|
|
||||||
payload.putString("code", "admob/error-code-invalid-request");
|
|
||||||
payload.putString("message", "The ad request was invalid; for instance, the ad unit ID was incorrect.");
|
|
||||||
break;
|
|
||||||
case AdRequest.ERROR_CODE_NETWORK_ERROR:
|
|
||||||
payload.putString("code", "admob/error-code-network-error");
|
|
||||||
payload.putString("message", "The ad request was unsuccessful due to network connectivity.");
|
|
||||||
break;
|
|
||||||
case AdRequest.ERROR_CODE_NO_FILL:
|
|
||||||
payload.putString("code", "admob/error-code-no-fill");
|
|
||||||
payload.putString("message", "The ad request was successful, but no ad was returned due to lack of ad inventory.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
sendEvent(Events.EVENT_AD_FAILED_TO_LOAD.toString(), payload);
|
sendEvent(Events.EVENT_AD_FAILED_TO_LOAD.toString(), payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue