feat: add onAdError event listener (#3381)

* feat: add onAdError event listener
* feat: remove onAdError event listener and use already existing
* feat: add ERROR event to docs
This commit is contained in:
Axel Vencatareddy
2023-12-02 13:52:01 +01:00
committed by GitHub
parent 4d9334b477
commit 596c02d2b3
10 changed files with 73 additions and 8 deletions

View File

@@ -54,6 +54,10 @@ public class ImaAdsLoader implements AdsLoader {
return this;
}
public Builder setAdErrorListener(Object ignoredReactExoplayerView) {
return this;
}
public ImaAdsLoader build() {
return null;
}

View File

@@ -12,6 +12,7 @@ import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.events.RCTEventEmitter;
import com.google.ads.interactivemedia.v3.api.AdError;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -434,6 +435,19 @@ public class VideoEventEmitter {
receiveEvent(EVENT_ON_RECEIVE_AD_EVENT, map);
}
public void receiveAdErrorEvent(AdError error) {
WritableMap map = Arguments.createMap();
map.putString("event", "ERROR");
WritableMap dataMap = Arguments.createMap();
dataMap.putString("message", error.getMessage());
dataMap.putString("code", String.valueOf(error.getErrorCode()));
dataMap.putString("type", String.valueOf(error.getErrorType()));
map.putMap("data", dataMap);
receiveEvent(EVENT_ON_RECEIVE_AD_EVENT, map);
}
private void receiveEvent(@VideoEvents String type, WritableMap event) {
eventEmitter.receiveEvent(viewId, type, event);
}

View File

@@ -108,6 +108,7 @@ import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.uimanager.ThemedReactContext;
import com.google.ads.interactivemedia.v3.api.AdEvent;
import com.google.ads.interactivemedia.v3.api.AdErrorEvent;
import com.google.common.collect.ImmutableList;
import java.net.CookieHandler;
@@ -132,7 +133,8 @@ public class ReactExoplayerView extends FrameLayout implements
BandwidthMeter.EventListener,
BecomingNoisyListener,
DrmSessionEventListener,
AdEvent.AdEventListener {
AdEvent.AdEventListener,
AdErrorEvent.AdErrorListener {
public static final double DEFAULT_MAX_HEAP_ALLOCATION_PERCENT = 1;
public static final double DEFAULT_MIN_BACK_BUFFER_MEMORY_RESERVE = 0;
@@ -621,8 +623,10 @@ public class ReactExoplayerView extends FrameLayout implements
.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF);
// Create an AdsLoader.
adsLoader = new ImaAdsLoader.Builder(themedReactContext)
adsLoader = new ImaAdsLoader
.Builder(themedReactContext)
.setAdEventListener(this)
.setAdErrorListener(this)
.build();
DefaultMediaSourceFactory mediaSourceFactory = new DefaultMediaSourceFactory(mediaDataSourceFactory);
@@ -2103,4 +2107,9 @@ public class ReactExoplayerView extends FrameLayout implements
eventEmitter.receiveAdEvent(adEvent.getType().name());
}
}
@Override
public void onAdError(AdErrorEvent adErrorEvent) {
eventEmitter.receiveAdErrorEvent(adErrorEvent.getError());
}
}

View File

@@ -0,0 +1,10 @@
package com.google.ads.interactivemedia.v3.api;
import androidx.annotation.InspectableProperty;
public abstract class AdError {
public abstract InspectableProperty getErrorCode();
public abstract InspectableProperty getErrorCodeNumber();
public abstract InspectableProperty getErrorType();
public abstract String getMessage();
}

View File

@@ -0,0 +1,9 @@
package com.google.ads.interactivemedia.v3.api;
public abstract class AdErrorEvent {
public abstract AdError getError();
public interface AdErrorListener {
public void onAdError(AdErrorEvent adErrorEvent);
}
}