diff --git a/android/src/main/java/com/adversport/rnaps/RNAPSAdLoaderModule.java b/android/src/main/java/com/adversport/rnaps/RNAPSAdLoaderModule.java index cf903b1..182211c 100644 --- a/android/src/main/java/com/adversport/rnaps/RNAPSAdLoaderModule.java +++ b/android/src/main/java/com/adversport/rnaps/RNAPSAdLoaderModule.java @@ -232,9 +232,9 @@ public void loadAd(int loaderId, String adType, ReadableMap options, Promise pro if (autoRefresh) { adLoader.setAutoRefresh(refreshInterval); - adLoaders.put(loaderId, adLoader); } + adLoaders.put(loaderId, adLoader); adLoader.loadAd(new AdCallback(loaderId, promise)); } diff --git a/example/src/Banner.component.tsx b/example/src/Banner.component.tsx index 02515d2..cbffe12 100644 --- a/example/src/Banner.component.tsx +++ b/example/src/Banner.component.tsx @@ -11,6 +11,7 @@ import { AdLoader, AdLoaderEvent, BannerAdLoaderOptions, + isAdError, TestIds, } from 'react-native-aps'; import { GAMBannerAd, BannerAdSize } from 'react-native-google-mobile-ads'; @@ -27,21 +28,23 @@ export default function BannerDemo() { {} ); const [apsBidError, setApsBidError] = useState(); + const [bidComplete, setBidComplete] = useState(false); const [gamAdLoaded, setGamAdLoaded] = useState(false); const [events, setEvents] = useState([]); const addEvent = (msg: string) => setEvents((prev) => [`${new Date().toLocaleTimeString()} ${msg}`, ...prev]); - const apsBidDone = - Object.keys(apsBidResult).length > 0 || apsBidError !== undefined; + const apsBidDone = bidComplete; const bidSuccess = apsBidDone && !apsBidError; useEffect(() => { + // Events for auto-refresh scenarios const unsubSuccess = adLoader.addListener( AdLoaderEvent.SUCCESS, (result) => { setApsBidResult(result); + setBidComplete(true); addEvent(`APS bid won (${Object.keys(result).length} KVs)`); } ); @@ -49,11 +52,26 @@ export default function BannerDemo() { AdLoaderEvent.FAILURE, (error) => { setApsBidError(error); + setBidComplete(true); addEvent(`APS bid failed (code: ${error.code})`); } ); - adLoader.loadAd(); + adLoader + .loadAd() + .then((result) => { + setApsBidResult(result); + setBidComplete(true); + addEvent(`APS bid won (${Object.keys(result).length} KVs)`); + }) + .catch((error) => { + const adError = isAdError(error) + ? error + : new AdError('unknown', String(error?.message ?? error)); + setApsBidError(adError); + setBidComplete(true); + addEvent(`APS bid failed (code: ${adError.code})`); + }); addEvent('APS bid requested'); return () => { diff --git a/ios/RNAPS/RNAPSAdLoaderModule.swift b/ios/RNAPS/RNAPSAdLoaderModule.swift index 12d2504..65d1bf8 100644 --- a/ios/RNAPS/RNAPSAdLoaderModule.swift +++ b/ios/RNAPS/RNAPSAdLoaderModule.swift @@ -181,9 +181,9 @@ class RNAPSAdLoaderModule: RCTEventEmitter { if (autoRefresh) { adLoader.setAutoRefresh(refreshInterval) - adLoaders.updateValue(adLoader, forKey: loaderId) } + adLoaders.updateValue(adLoader, forKey: loaderId) adLoader.loadAd(AdLoadCallback(adLoaderModule: self, loaderId: loaderId, resolve: resolve, reject: reject)) }