UNPKG

2.92 kBJavaScriptView Raw
1import { EventEmitter, UnavailabilityError } from '@unimodules/core';
2import { setTestDeviceIDAsync } from './AdMob';
3import AdMobNativeModule from './ExpoAdsAdMobInterstitialManager';
4const moduleName = 'AdMobInterstitial';
5const eventNames = [
6 'interstitialDidLoad',
7 'interstitialDidFailToLoad',
8 'interstitialDidOpen',
9 'interstitialDidClose',
10 'interstitialWillLeaveApplication',
11];
12const eventEmitter = new EventEmitter(AdMobNativeModule);
13const eventHandlers = {};
14for (const eventName of eventNames) {
15 eventHandlers[eventName] = new Map();
16}
17export default {
18 async setAdUnitID(id) {
19 if (!AdMobNativeModule.setAdUnitID) {
20 throw new UnavailabilityError(moduleName, 'setAdUnitID');
21 }
22 await AdMobNativeModule.setAdUnitID(id);
23 },
24 /** @deprecated Test device IDs are now set globally. Use `AdMob.setTestDeviceIDAsync` instead. */
25 async setTestDeviceID(id) {
26 console.warn('AdMobInterstitial.setTestDeviceID is deprecated. Test device IDs are now set globally. Use AdMob.setTestDeviceIDAsync instead.');
27 await setTestDeviceIDAsync(id);
28 },
29 async requestAdAsync(options = {}) {
30 if (!AdMobNativeModule.requestAd) {
31 throw new UnavailabilityError(moduleName, 'requestAdAsync');
32 }
33 const params = {
34 ...options.additionalRequestParams,
35 };
36 if (!options.servePersonalizedAds) {
37 params.npa = '1';
38 }
39 await AdMobNativeModule.requestAd(params);
40 },
41 async showAdAsync() {
42 if (!AdMobNativeModule.showAd) {
43 throw new UnavailabilityError(moduleName, 'showAdAsync');
44 }
45 await AdMobNativeModule.showAd();
46 },
47 async dismissAdAsync() {
48 if (!AdMobNativeModule.dismissAd) {
49 throw new UnavailabilityError(moduleName, 'dismissAdAsync');
50 }
51 await AdMobNativeModule.dismissAd();
52 },
53 async getIsReadyAsync() {
54 if (!AdMobNativeModule.getIsReady) {
55 throw new UnavailabilityError(moduleName, 'getIsReadyAsync');
56 }
57 return await AdMobNativeModule.getIsReady();
58 },
59 addEventListener(type, handler) {
60 if (eventNames.includes(type)) {
61 eventHandlers[type].set(handler, eventEmitter.addListener(type, handler));
62 }
63 else {
64 console.log(`Event with type ${type} does not exist.`);
65 }
66 },
67 removeEventListener(type, handler) {
68 const eventSubscription = eventHandlers[type].get(handler);
69 if (!eventHandlers[type].has(handler) || !eventSubscription) {
70 return;
71 }
72 eventSubscription.remove();
73 eventHandlers[type].delete(handler);
74 },
75 removeAllListeners() {
76 for (const eventName of eventNames) {
77 eventEmitter.removeAllListeners(eventName);
78 }
79 },
80};
81//# sourceMappingURL=AdMobInterstitial.js.map
\No newline at end of file