react-native-daro 1.0.13 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +30 -30
- package/android/build.gradle +52 -59
- package/android/src/admob/java/com/daro/reactnative/DaroSdkBridge.kt +23 -0
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/java/com/{darom → daro/reactnative}/DaroMAdBannerViewManager.kt +38 -15
- package/android/src/main/java/com/daro/reactnative/DaroMAdNativeViewManager.kt +167 -0
- package/android/src/main/java/com/daro/reactnative/DaroMModule.kt +257 -0
- package/android/src/main/java/com/daro/reactnative/DaroMPackage.kt +45 -0
- package/android/src/main/java/com/daro/reactnative/DaroMediaViewManager.kt +25 -0
- package/android/src/main/java/com/{darom → daro/reactnative}/constants/InternalDaroMBannerSize.kt +1 -1
- package/android/src/main/java/com/{darom → daro/reactnative}/event/DaroMEvent.kt +19 -8
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMBannerViewModuleImpl.kt +2 -2
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMInterstitialModuleImpl.kt +26 -26
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMLightPopupModuleImpl.kt +30 -29
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMRewardedAdModuleImpl.kt +27 -27
- package/android/src/main/java/com/{darom → daro/reactnative}/util/AdInfoUtil.kt +25 -1
- package/android/src/main/java/com/daro/reactnative/util/EventEmitterUtil.kt +37 -0
- package/android/src/main/java/com/daro/reactnative/view/DaroMAdBannerViewContainer.kt +417 -0
- package/android/src/main/java/com/daro/reactnative/view/DaroMAdNativeViewContainer.kt +624 -0
- package/android/src/main/java/com/daro/reactnative/view/DaroMediaView.kt +123 -0
- package/android/src/newarch/java/com/daro/reactnative/DaroMModuleSpec.kt +6 -0
- package/android/src/oldarch/java/com/daro/reactnative/DaroMModuleSpec.kt +90 -0
- package/app.plugin.js +1 -0
- package/ios/DaroMModule+AppOpen.swift +38 -32
- package/ios/DaroMModule+Interstitial.swift +32 -26
- package/ios/DaroMModule+LightPopup.swift +43 -33
- package/ios/DaroMModule+Rewarded.swift +38 -27
- package/ios/DaroMModule.mm +45 -17
- package/ios/DaroMModule.swift +24 -17
- package/ios/Fabric/DaroMAdBannerComponentView.mm +207 -0
- package/ios/Fabric/DaroMFabricEventSink.mm +31 -0
- package/ios/Fabric/DaroMFabricPropApplier.mm +123 -0
- package/ios/Fabric/DaroMNativeAdComponentView.mm +294 -0
- package/ios/{DaroMAdBannerViewManager.m → Paper/DaroMAdBannerViewManager.m} +3 -1
- package/ios/Paper/DaroMAdBannerViewManager.swift +21 -0
- package/ios/{DaroMNativeAdViewManager.m → Paper/DaroMNativeAdViewManager.m} +2 -1
- package/ios/Paper/DaroMNativeAdViewManager.swift +22 -0
- package/ios/Shared/DaroMAdEventSink.swift +24 -0
- package/ios/Shared/DaroMBannerAdView.swift +188 -0
- package/ios/Shared/DaroMNativeAdLoadCoordinator.swift +49 -0
- package/ios/Shared/DaroMNativeAdView.swift +575 -0
- package/ios/Shared/DaroMNativeAssetResolver.swift +53 -0
- package/ios/mediation/admob/DaroMediationDebugger.swift +11 -0
- package/ios/mediation/admob/DaroMediationTypes.swift +23 -0
- package/lib/commonjs/AdBannerView.js +21 -35
- package/lib/commonjs/AdBannerView.js.map +1 -1
- package/lib/commonjs/AppOpenAd.js +80 -21
- package/lib/commonjs/AppOpenAd.js.map +1 -1
- package/lib/commonjs/DaroMAdBannerViewNativeComponent.ts +47 -0
- package/lib/commonjs/DaroMNativeAdViewNativeComponent.ts +62 -0
- package/lib/commonjs/DaroMediaViewNativeComponent.ts +9 -0
- package/lib/commonjs/ErrorCode.js.map +1 -1
- package/lib/commonjs/EventEmitter.js +4 -5
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/InterstitialAd.js +48 -22
- package/lib/commonjs/InterstitialAd.js.map +1 -1
- package/lib/commonjs/LightPopupAd.js +64 -46
- package/lib/commonjs/LightPopupAd.js.map +1 -1
- package/lib/commonjs/NativeDaroModule.js +9 -0
- package/lib/commonjs/NativeDaroModule.js.map +1 -0
- package/lib/commonjs/RewardedAd.js +47 -23
- package/lib/commonjs/RewardedAd.js.map +1 -1
- package/lib/commonjs/codegen-env.d.js +2 -0
- package/lib/commonjs/codegen-env.d.js.map +1 -0
- package/lib/commonjs/hooks/useInterstitialAd.js +110 -0
- package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
- package/lib/commonjs/hooks/useLightPopupAd.js +114 -0
- package/lib/commonjs/hooks/useLightPopupAd.js.map +1 -0
- package/lib/commonjs/hooks/useRewardedAd.js +113 -0
- package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
- package/lib/commonjs/index.js +29 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdView.js +23 -18
- package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js +43 -31
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js +34 -7
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/module/AdBannerView.js +20 -36
- package/lib/module/AdBannerView.js.map +1 -1
- package/lib/module/AppOpenAd.js +80 -22
- package/lib/module/AppOpenAd.js.map +1 -1
- package/lib/module/DaroMAdBannerViewNativeComponent.ts +47 -0
- package/lib/module/DaroMNativeAdViewNativeComponent.ts +62 -0
- package/lib/module/DaroMediaViewNativeComponent.ts +9 -0
- package/lib/module/ErrorCode.js.map +1 -1
- package/lib/module/EventEmitter.js +4 -6
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/InterstitialAd.js +47 -22
- package/lib/module/InterstitialAd.js.map +1 -1
- package/lib/module/LightPopupAd.js +65 -47
- package/lib/module/LightPopupAd.js.map +1 -1
- package/lib/module/NativeDaroModule.js +5 -0
- package/lib/module/NativeDaroModule.js.map +1 -0
- package/lib/module/RewardedAd.js +46 -23
- package/lib/module/RewardedAd.js.map +1 -1
- package/lib/module/codegen-env.d.js +2 -0
- package/lib/module/codegen-env.d.js.map +1 -0
- package/lib/module/hooks/useInterstitialAd.js +106 -0
- package/lib/module/hooks/useInterstitialAd.js.map +1 -0
- package/lib/module/hooks/useLightPopupAd.js +110 -0
- package/lib/module/hooks/useLightPopupAd.js.map +1 -0
- package/lib/module/hooks/useRewardedAd.js +109 -0
- package/lib/module/hooks/useRewardedAd.js.map +1 -0
- package/lib/module/index.js +7 -13
- package/lib/module/index.js.map +1 -1
- package/lib/module/nativeAd/NativeAdView.js +22 -19
- package/lib/module/nativeAd/NativeAdView.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewComponents.js +45 -34
- package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewProvider.js +35 -8
- package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/typescript/commonjs/plugin/src/index.d.ts +19 -0
- package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts +6 -0
- package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts.map +1 -0
- package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +8 -0
- package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -0
- package/lib/typescript/commonjs/plugin/src/withIos.d.ts +8 -0
- package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/AdBannerView.d.ts +126 -4
- package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DaroMAdBannerViewNativeComponent.d.ts +32 -0
- package/lib/typescript/commonjs/src/DaroMAdBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/DaroMNativeAdViewNativeComponent.d.ts +42 -0
- package/lib/typescript/commonjs/src/DaroMNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts +6 -0
- package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ErrorCode.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/NativeDaroModule.d.ts +61 -0
- package/lib/typescript/commonjs/src/NativeDaroModule.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/RewardedAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts +19 -0
- package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts +23 -0
- package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts +20 -0
- package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +7 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +125 -2
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts +2 -2
- package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdProps.d.ts +2 -2
- package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +2 -0
- package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -1
- package/lib/typescript/module/plugin/src/index.d.ts +19 -0
- package/lib/typescript/module/plugin/src/index.d.ts.map +1 -0
- package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts +6 -0
- package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts.map +1 -0
- package/lib/typescript/module/plugin/src/withAndroid.d.ts +8 -0
- package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -0
- package/lib/typescript/module/plugin/src/withIos.d.ts +8 -0
- package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -0
- package/lib/typescript/module/src/AdBannerView.d.ts +126 -4
- package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
- package/lib/typescript/module/src/AppOpenAd.d.ts +6 -0
- package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/module/src/DaroMAdBannerViewNativeComponent.d.ts +32 -0
- package/lib/typescript/module/src/DaroMAdBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/DaroMNativeAdViewNativeComponent.d.ts +42 -0
- package/lib/typescript/module/src/DaroMNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts +6 -0
- package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ErrorCode.d.ts.map +1 -1
- package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/module/src/InterstitialAd.d.ts +6 -0
- package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/module/src/LightPopupAd.d.ts +6 -0
- package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/module/src/NativeDaroModule.d.ts +61 -0
- package/lib/typescript/module/src/NativeDaroModule.d.ts.map +1 -0
- package/lib/typescript/module/src/RewardedAd.d.ts +6 -0
- package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts +19 -0
- package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts +23 -0
- package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useRewardedAd.d.ts +20 -0
- package/lib/typescript/module/src/hooks/useRewardedAd.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +7 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +125 -2
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
- package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdBannerViewProps.d.ts +2 -2
- package/lib/typescript/module/src/types/AdBannerViewProps.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdProps.d.ts +2 -2
- package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -1
- package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +1 -1
- package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +2 -0
- package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -1
- package/package.json +95 -105
- package/plugin/build/index.d.ts +18 -0
- package/plugin/build/index.js +71 -0
- package/plugin/build/skAdNetworkIds.d.ts +5 -0
- package/plugin/build/skAdNetworkIds.js +205 -0
- package/plugin/build/withAndroid.d.ts +7 -0
- package/plugin/build/withAndroid.js +222 -0
- package/plugin/build/withIos.d.ts +7 -0
- package/plugin/build/withIos.js +82 -0
- package/react-native-daro.podspec +28 -0
- package/src/AdBannerView.tsx +48 -48
- package/src/AppOpenAd.ts +101 -20
- package/src/DaroMAdBannerViewNativeComponent.ts +47 -0
- package/src/DaroMNativeAdViewNativeComponent.ts +62 -0
- package/src/DaroMediaViewNativeComponent.ts +9 -0
- package/src/ErrorCode.ts +1 -2
- package/src/EventEmitter.ts +9 -7
- package/src/InterstitialAd.ts +75 -21
- package/src/LightPopupAd.ts +90 -51
- package/src/NativeDaroModule.ts +91 -0
- package/src/RewardedAd.ts +72 -22
- package/src/codegen-env.d.ts +45 -0
- package/src/hooks/useInterstitialAd.ts +117 -0
- package/src/hooks/useLightPopupAd.ts +132 -0
- package/src/hooks/useRewardedAd.ts +122 -0
- package/src/index.tsx +21 -22
- package/src/nativeAd/NativeAdView.tsx +83 -45
- package/src/nativeAd/NativeAdViewComponents.tsx +129 -64
- package/src/nativeAd/NativeAdViewProvider.tsx +84 -16
- package/src/types/AdBannerViewProps.ts +11 -11
- package/src/types/AdInfo.ts +17 -17
- package/src/types/AdProps.ts +8 -9
- package/src/types/DaroMMobileAds.ts +3 -6
- package/src/types/NativeAdViewProps.ts +12 -5
- package/src/types/index.ts +1 -1
- package/android/gradle.properties +0 -5
- package/android/src/main/AndroidManifestNew.xml +0 -7
- package/android/src/main/java/com/darom/DaroMAdNativeViewManager.kt +0 -136
- package/android/src/main/java/com/darom/DaroMModule.kt +0 -203
- package/android/src/main/java/com/darom/DaroMPackage.kt +0 -21
- package/android/src/main/java/com/darom/util/EventEmitterUtil.kt +0 -24
- package/android/src/main/java/com/darom/view/DaroMAdBannerViewContainer.kt +0 -163
- package/android/src/main/java/com/darom/view/DaroMAdNativeViewContainer.kt +0 -375
- package/android/src/main/res/layout/layout_activity_transparent.xml +0 -7
- package/android/src/main/res/values/styles.xml +0 -11
- package/ios/DaroM-Bridging-Header.h +0 -6
- package/ios/DaroMAdBannerViewManager.swift +0 -91
- package/ios/DaroMNativeAdViewManager.swift +0 -291
- package/react-native-daro-m.podspec +0 -44
package/src/RewardedAd.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { NativeModules } from 'react-native';
|
|
2
1
|
import {
|
|
3
2
|
addEventListener,
|
|
4
3
|
removeEventListener,
|
|
5
4
|
AdEventEmitter,
|
|
6
5
|
} from './EventEmitter';
|
|
6
|
+
import NativeDaroModule from './NativeDaroModule';
|
|
7
7
|
import type {
|
|
8
8
|
AdDisplayFailedInfo,
|
|
9
9
|
AdInfo,
|
|
@@ -16,8 +16,6 @@ import {
|
|
|
16
16
|
type RewardedAdEventPayloadMap,
|
|
17
17
|
} from './types/AdEvent';
|
|
18
18
|
|
|
19
|
-
const { DaroMModule } = NativeModules;
|
|
20
|
-
|
|
21
19
|
const {
|
|
22
20
|
ON_REWARDED_AD_LOADED_EVENT,
|
|
23
21
|
ON_REWARDED_AD_LOAD_FAILED_EVENT,
|
|
@@ -27,7 +25,7 @@ const {
|
|
|
27
25
|
ON_REWARDED_AD_HIDDEN_EVENT,
|
|
28
26
|
ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
|
|
29
27
|
ON_REWARDED_AD_IMPRESSION_RECORDED,
|
|
30
|
-
} =
|
|
28
|
+
} = NativeDaroModule.getConstants();
|
|
31
29
|
|
|
32
30
|
const NATIVE_EVENT_BY_TYPE: Record<AdEventType | RewardedAdEventType, string> =
|
|
33
31
|
{
|
|
@@ -42,24 +40,36 @@ const NATIVE_EVENT_BY_TYPE: Record<AdEventType | RewardedAdEventType, string> =
|
|
|
42
40
|
};
|
|
43
41
|
|
|
44
42
|
export class RewardedAd {
|
|
43
|
+
private static _nextRequestId = 1;
|
|
44
|
+
private static _legacyRequestIds = new Map<string, number>();
|
|
45
|
+
private static _legacyRequestIdSet = new Set<number>();
|
|
46
|
+
|
|
45
47
|
private readonly eventEmitter = new AdEventEmitter();
|
|
46
48
|
|
|
47
|
-
private constructor(
|
|
49
|
+
private constructor(
|
|
50
|
+
private readonly requestId: number,
|
|
51
|
+
private readonly adUnitId: string
|
|
52
|
+
) {}
|
|
48
53
|
|
|
49
54
|
static createForAdRequest(adUnitId: string): RewardedAd {
|
|
50
|
-
|
|
55
|
+
const requestId = RewardedAd._nextRequestId++;
|
|
56
|
+
return new RewardedAd(requestId, adUnitId);
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
isAdReady(): Promise<boolean> {
|
|
54
|
-
return
|
|
60
|
+
return NativeDaroModule.isRewardedAdReady(this.requestId, this.adUnitId);
|
|
55
61
|
}
|
|
56
62
|
|
|
57
63
|
load(): void {
|
|
58
|
-
|
|
64
|
+
NativeDaroModule.loadRewardedAd(this.requestId, this.adUnitId);
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
show(customData?: string | null): void {
|
|
62
|
-
|
|
68
|
+
NativeDaroModule.showRewardedAd(
|
|
69
|
+
this.requestId,
|
|
70
|
+
this.adUnitId,
|
|
71
|
+
customData ?? null
|
|
72
|
+
);
|
|
63
73
|
}
|
|
64
74
|
|
|
65
75
|
addAdEventListener<T extends AdEventType | RewardedAdEventType>(
|
|
@@ -67,9 +77,9 @@ export class RewardedAd {
|
|
|
67
77
|
listener: (info: RewardedAdEventPayloadMap[T]) => void
|
|
68
78
|
): () => void {
|
|
69
79
|
const nativeEvent = NATIVE_EVENT_BY_TYPE[type];
|
|
70
|
-
const
|
|
80
|
+
const requestId = this.requestId;
|
|
71
81
|
return this.eventEmitter.addEventListener(nativeEvent, (payload: any) => {
|
|
72
|
-
if (payload?.
|
|
82
|
+
if (payload?.requestId !== requestId) {
|
|
73
83
|
return;
|
|
74
84
|
}
|
|
75
85
|
listener(payload);
|
|
@@ -82,24 +92,49 @@ export class RewardedAd {
|
|
|
82
92
|
|
|
83
93
|
// ---- Deprecated static API (backward compatibility) ----
|
|
84
94
|
|
|
95
|
+
private static _getLegacyRequestId(adUnitId: string): number {
|
|
96
|
+
let requestId = RewardedAd._legacyRequestIds.get(adUnitId);
|
|
97
|
+
if (requestId === undefined) {
|
|
98
|
+
requestId = RewardedAd._nextRequestId++;
|
|
99
|
+
RewardedAd._legacyRequestIds.set(adUnitId, requestId);
|
|
100
|
+
RewardedAd._legacyRequestIdSet.add(requestId);
|
|
101
|
+
}
|
|
102
|
+
return requestId;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
private static _addLegacyEventListener<T>(
|
|
106
|
+
event: string,
|
|
107
|
+
listener: (info: T) => void
|
|
108
|
+
): void {
|
|
109
|
+
addEventListener(event, (payload: any) => {
|
|
110
|
+
if (!RewardedAd._legacyRequestIdSet.has(payload?.requestId)) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
listener(payload);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
85
117
|
/** @deprecated `RewardedAd.createForAdRequest(adUnitId)` 인스턴스의 `isAdReady()`를 사용하세요. */
|
|
86
118
|
static isAdReady(adUnitId: string): Promise<boolean> {
|
|
87
|
-
|
|
119
|
+
const requestId = RewardedAd._getLegacyRequestId(adUnitId);
|
|
120
|
+
return NativeDaroModule.isRewardedAdReady(requestId, adUnitId);
|
|
88
121
|
}
|
|
89
122
|
|
|
90
123
|
/** @deprecated `RewardedAd.createForAdRequest(adUnitId)` 인스턴스의 `load()`를 사용하세요. */
|
|
91
124
|
static loadAd(adUnitId: string): void {
|
|
92
|
-
|
|
125
|
+
const requestId = RewardedAd._getLegacyRequestId(adUnitId);
|
|
126
|
+
NativeDaroModule.loadRewardedAd(requestId, adUnitId);
|
|
93
127
|
}
|
|
94
128
|
|
|
95
129
|
/** @deprecated `RewardedAd.createForAdRequest(adUnitId)` 인스턴스의 `show()`를 사용하세요. */
|
|
96
130
|
static showAd(adUnitId: string, customData?: string | null): void {
|
|
97
|
-
|
|
131
|
+
const requestId = RewardedAd._getLegacyRequestId(adUnitId);
|
|
132
|
+
NativeDaroModule.showRewardedAd(requestId, adUnitId, customData ?? null);
|
|
98
133
|
}
|
|
99
134
|
|
|
100
135
|
/** @deprecated `addAdEventListener(AdEventType.LOADED, ...)`를 인스턴스에서 사용하세요. */
|
|
101
136
|
static addAdLoadedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
102
|
-
|
|
137
|
+
RewardedAd._addLegacyEventListener(ON_REWARDED_AD_LOADED_EVENT, listener);
|
|
103
138
|
}
|
|
104
139
|
|
|
105
140
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -111,7 +146,10 @@ export class RewardedAd {
|
|
|
111
146
|
static addAdLoadFailedEventListener(
|
|
112
147
|
listener: (errorInfo: AdLoadFailedInfo) => void
|
|
113
148
|
): void {
|
|
114
|
-
|
|
149
|
+
RewardedAd._addLegacyEventListener(
|
|
150
|
+
ON_REWARDED_AD_LOAD_FAILED_EVENT,
|
|
151
|
+
listener
|
|
152
|
+
);
|
|
115
153
|
}
|
|
116
154
|
|
|
117
155
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -121,7 +159,7 @@ export class RewardedAd {
|
|
|
121
159
|
|
|
122
160
|
/** @deprecated `addAdEventListener(AdEventType.CLICKED, ...)`를 인스턴스에서 사용하세요. */
|
|
123
161
|
static addAdClickedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
124
|
-
|
|
162
|
+
RewardedAd._addLegacyEventListener(ON_REWARDED_AD_CLICKED_EVENT, listener);
|
|
125
163
|
}
|
|
126
164
|
|
|
127
165
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -131,7 +169,10 @@ export class RewardedAd {
|
|
|
131
169
|
|
|
132
170
|
/** @deprecated `addAdEventListener(AdEventType.DISPLAYED, ...)`를 인스턴스에서 사용하세요. */
|
|
133
171
|
static addAdDisplayedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
134
|
-
|
|
172
|
+
RewardedAd._addLegacyEventListener(
|
|
173
|
+
ON_REWARDED_AD_DISPLAYED_EVENT,
|
|
174
|
+
listener
|
|
175
|
+
);
|
|
135
176
|
}
|
|
136
177
|
|
|
137
178
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -143,7 +184,10 @@ export class RewardedAd {
|
|
|
143
184
|
static addAdFailedToDisplayEventListener(
|
|
144
185
|
listener: (errorInfo: AdDisplayFailedInfo) => void
|
|
145
186
|
): void {
|
|
146
|
-
|
|
187
|
+
RewardedAd._addLegacyEventListener(
|
|
188
|
+
ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
|
|
189
|
+
listener
|
|
190
|
+
);
|
|
147
191
|
}
|
|
148
192
|
|
|
149
193
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -153,7 +197,7 @@ export class RewardedAd {
|
|
|
153
197
|
|
|
154
198
|
/** @deprecated `addAdEventListener(AdEventType.HIDDEN, ...)`를 인스턴스에서 사용하세요. */
|
|
155
199
|
static addAdHiddenEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
156
|
-
|
|
200
|
+
RewardedAd._addLegacyEventListener(ON_REWARDED_AD_HIDDEN_EVENT, listener);
|
|
157
201
|
}
|
|
158
202
|
|
|
159
203
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -165,7 +209,10 @@ export class RewardedAd {
|
|
|
165
209
|
static addAdImpressionRecordedListener(
|
|
166
210
|
listener: (adInfo: AdInfo) => void
|
|
167
211
|
): void {
|
|
168
|
-
|
|
212
|
+
RewardedAd._addLegacyEventListener(
|
|
213
|
+
ON_REWARDED_AD_IMPRESSION_RECORDED,
|
|
214
|
+
listener
|
|
215
|
+
);
|
|
169
216
|
}
|
|
170
217
|
|
|
171
218
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -177,7 +224,10 @@ export class RewardedAd {
|
|
|
177
224
|
static addAdReceivedRewardEventListener(
|
|
178
225
|
listener: (adInfo: AdRewardInfo) => void
|
|
179
226
|
): void {
|
|
180
|
-
|
|
227
|
+
RewardedAd._addLegacyEventListener(
|
|
228
|
+
ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
|
|
229
|
+
listener
|
|
230
|
+
);
|
|
181
231
|
}
|
|
182
232
|
|
|
183
233
|
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
declare module 'react-native/Libraries/Types/CodegenTypes' {
|
|
2
|
+
import type { NativeSyntheticEvent } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export type DirectEventHandler<
|
|
5
|
+
T,
|
|
6
|
+
PaperName extends string | never = never,
|
|
7
|
+
> = [PaperName] extends [never]
|
|
8
|
+
? (event: NativeSyntheticEvent<T>) => void | Promise<void>
|
|
9
|
+
: (event: NativeSyntheticEvent<T>) => void | Promise<void>;
|
|
10
|
+
export type Int32 = number;
|
|
11
|
+
export type Double = number;
|
|
12
|
+
export type UnsafeObject = object;
|
|
13
|
+
export type UnsafeMixed = unknown;
|
|
14
|
+
export type WithDefault<Type, Value> = Type | (Value & never);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare module 'react-native/Libraries/Utilities/codegenNativeCommands' {
|
|
18
|
+
export interface Options<T extends string> {
|
|
19
|
+
readonly supportedCommands: ReadonlyArray<T>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function codegenNativeCommands<T extends object>(
|
|
23
|
+
options: Options<keyof T extends string ? keyof T : never>
|
|
24
|
+
): T;
|
|
25
|
+
|
|
26
|
+
export default codegenNativeCommands;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare module 'react-native/Libraries/Utilities/codegenNativeComponent' {
|
|
30
|
+
import type { HostComponent } from 'react-native';
|
|
31
|
+
|
|
32
|
+
export interface Options {
|
|
33
|
+
readonly interfaceOnly?: boolean | undefined;
|
|
34
|
+
readonly paperComponentName?: string | undefined;
|
|
35
|
+
readonly paperComponentNameDeprecated?: string | undefined;
|
|
36
|
+
readonly excludedPlatforms?: ReadonlyArray<'iOS' | 'android'> | undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function codegenNativeComponent<Props extends object>(
|
|
40
|
+
componentName: string,
|
|
41
|
+
options?: Options
|
|
42
|
+
): HostComponent<Props>;
|
|
43
|
+
|
|
44
|
+
export default codegenNativeComponent;
|
|
45
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { InterstitialAd } from '../InterstitialAd';
|
|
3
|
+
import { AdEventType } from '../types/AdEvent';
|
|
4
|
+
import type {
|
|
5
|
+
AdDisplayFailedInfo,
|
|
6
|
+
AdInfo,
|
|
7
|
+
AdLoadFailedInfo,
|
|
8
|
+
} from '../types/AdInfo';
|
|
9
|
+
|
|
10
|
+
export type UseInterstitialAdOptions = {
|
|
11
|
+
onLoaded?: (adInfo: AdInfo) => void;
|
|
12
|
+
onLoadFailed?: (error: AdLoadFailedInfo) => void;
|
|
13
|
+
onClicked?: (adInfo: AdInfo) => void;
|
|
14
|
+
onDisplayed?: (adInfo: AdInfo) => void;
|
|
15
|
+
onFailedToDisplay?: (error: AdDisplayFailedInfo) => void;
|
|
16
|
+
onHidden?: (adInfo: AdInfo) => void;
|
|
17
|
+
onImpressionRecorded?: (adInfo: AdInfo) => void;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type UseInterstitialAdResult = {
|
|
21
|
+
isLoaded: boolean;
|
|
22
|
+
isLoading: boolean;
|
|
23
|
+
load: () => void;
|
|
24
|
+
show: () => void;
|
|
25
|
+
isAdReady: () => Promise<boolean>;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export function useInterstitialAd(
|
|
29
|
+
adUnitId: string | null,
|
|
30
|
+
options: UseInterstitialAdOptions = {}
|
|
31
|
+
): UseInterstitialAdResult {
|
|
32
|
+
const adRef = useRef<InterstitialAd | null>(null);
|
|
33
|
+
const optionsRef = useRef(options);
|
|
34
|
+
optionsRef.current = options;
|
|
35
|
+
const [state, setState] = useState({
|
|
36
|
+
isLoaded: false,
|
|
37
|
+
isLoading: false,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const load = useCallback(() => {
|
|
41
|
+
if (!adUnitId) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const ad = adRef.current;
|
|
46
|
+
if (!ad) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
setState({ isLoaded: false, isLoading: true });
|
|
51
|
+
ad.load();
|
|
52
|
+
}, [adUnitId]);
|
|
53
|
+
|
|
54
|
+
const show = useCallback(() => {
|
|
55
|
+
adRef.current?.show();
|
|
56
|
+
}, []);
|
|
57
|
+
|
|
58
|
+
const isAdReady = useCallback(async () => {
|
|
59
|
+
const isLoaded = (await adRef.current?.isAdReady()) ?? false;
|
|
60
|
+
setState((prevState) => ({ ...prevState, isLoaded }));
|
|
61
|
+
return isLoaded;
|
|
62
|
+
}, []);
|
|
63
|
+
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
adRef.current?.removeAllListeners();
|
|
66
|
+
adRef.current = null;
|
|
67
|
+
setState({ isLoaded: false, isLoading: false });
|
|
68
|
+
|
|
69
|
+
if (!adUnitId) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const ad = InterstitialAd.createForAdRequest(adUnitId);
|
|
74
|
+
adRef.current = ad;
|
|
75
|
+
|
|
76
|
+
ad.addAdEventListener(AdEventType.LOADED, (info) => {
|
|
77
|
+
setState({ isLoaded: true, isLoading: false });
|
|
78
|
+
optionsRef.current.onLoaded?.(info);
|
|
79
|
+
});
|
|
80
|
+
ad.addAdEventListener(AdEventType.LOAD_FAILED, (error) => {
|
|
81
|
+
setState({ isLoaded: false, isLoading: false });
|
|
82
|
+
optionsRef.current.onLoadFailed?.(error);
|
|
83
|
+
});
|
|
84
|
+
ad.addAdEventListener(AdEventType.DISPLAYED, (info) => {
|
|
85
|
+
setState((prevState) => ({ ...prevState, isLoaded: false }));
|
|
86
|
+
optionsRef.current.onDisplayed?.(info);
|
|
87
|
+
});
|
|
88
|
+
ad.addAdEventListener(AdEventType.FAILED_TO_DISPLAY, (error) => {
|
|
89
|
+
setState({ isLoaded: false, isLoading: false });
|
|
90
|
+
optionsRef.current.onFailedToDisplay?.(error);
|
|
91
|
+
});
|
|
92
|
+
ad.addAdEventListener(AdEventType.HIDDEN, (info) => {
|
|
93
|
+
setState((prevState) => ({ ...prevState, isLoaded: false }));
|
|
94
|
+
optionsRef.current.onHidden?.(info);
|
|
95
|
+
});
|
|
96
|
+
ad.addAdEventListener(AdEventType.CLICKED, (info) => {
|
|
97
|
+
optionsRef.current.onClicked?.(info);
|
|
98
|
+
});
|
|
99
|
+
ad.addAdEventListener(AdEventType.IMPRESSION_RECORDED, (info) => {
|
|
100
|
+
optionsRef.current.onImpressionRecorded?.(info);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
return () => {
|
|
104
|
+
ad.removeAllListeners();
|
|
105
|
+
if (adRef.current === ad) {
|
|
106
|
+
adRef.current = null;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}, [adUnitId]);
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
...state,
|
|
113
|
+
load,
|
|
114
|
+
show,
|
|
115
|
+
isAdReady,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { LightPopupAd } from '../LightPopupAd';
|
|
3
|
+
import { AdEventType } from '../types/AdEvent';
|
|
4
|
+
import type {
|
|
5
|
+
AdDisplayFailedInfo,
|
|
6
|
+
AdInfo,
|
|
7
|
+
AdLoadFailedInfo,
|
|
8
|
+
} from '../types/AdInfo';
|
|
9
|
+
import type { LightPopupAdConfiguration } from '../types/LightPopupAd';
|
|
10
|
+
|
|
11
|
+
export type UseLightPopupAdOptions = {
|
|
12
|
+
onLoaded?: (adInfo: AdInfo) => void;
|
|
13
|
+
onLoadFailed?: (error: AdLoadFailedInfo) => void;
|
|
14
|
+
onClicked?: (adInfo: AdInfo) => void;
|
|
15
|
+
onDisplayed?: (adInfo: AdInfo) => void;
|
|
16
|
+
onFailedToDisplay?: (error: AdDisplayFailedInfo) => void;
|
|
17
|
+
onHidden?: (adInfo: AdInfo) => void;
|
|
18
|
+
onImpressionRecorded?: (adInfo: AdInfo) => void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type UseLightPopupAdLoadOptions = {
|
|
22
|
+
configuration?: LightPopupAdConfiguration;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type UseLightPopupAdResult = {
|
|
26
|
+
isLoaded: boolean;
|
|
27
|
+
isLoading: boolean;
|
|
28
|
+
load: (options?: UseLightPopupAdLoadOptions) => void;
|
|
29
|
+
show: () => void;
|
|
30
|
+
isAdReady: () => Promise<boolean>;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export function useLightPopupAd(
|
|
34
|
+
adUnitId: string | null,
|
|
35
|
+
options: UseLightPopupAdOptions = {}
|
|
36
|
+
): UseLightPopupAdResult {
|
|
37
|
+
const adRef = useRef<LightPopupAd | null>(null);
|
|
38
|
+
const optionsRef = useRef(options);
|
|
39
|
+
optionsRef.current = options;
|
|
40
|
+
const [state, setState] = useState({
|
|
41
|
+
isLoaded: false,
|
|
42
|
+
isLoading: false,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
const createAd = useCallback(() => {
|
|
46
|
+
if (!adUnitId) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
adRef.current?.removeAllListeners();
|
|
51
|
+
|
|
52
|
+
const ad = LightPopupAd.createForAdRequest(adUnitId);
|
|
53
|
+
adRef.current = ad;
|
|
54
|
+
|
|
55
|
+
ad.addAdEventListener(AdEventType.LOADED, (info) => {
|
|
56
|
+
setState({ isLoaded: true, isLoading: false });
|
|
57
|
+
optionsRef.current.onLoaded?.(info);
|
|
58
|
+
});
|
|
59
|
+
ad.addAdEventListener(AdEventType.LOAD_FAILED, (error) => {
|
|
60
|
+
setState({ isLoaded: false, isLoading: false });
|
|
61
|
+
optionsRef.current.onLoadFailed?.(error);
|
|
62
|
+
});
|
|
63
|
+
ad.addAdEventListener(AdEventType.DISPLAYED, (info) => {
|
|
64
|
+
setState((prevState) => ({ ...prevState, isLoaded: false }));
|
|
65
|
+
optionsRef.current.onDisplayed?.(info);
|
|
66
|
+
});
|
|
67
|
+
ad.addAdEventListener(AdEventType.FAILED_TO_DISPLAY, (error) => {
|
|
68
|
+
setState({ isLoaded: false, isLoading: false });
|
|
69
|
+
optionsRef.current.onFailedToDisplay?.(error);
|
|
70
|
+
});
|
|
71
|
+
ad.addAdEventListener(AdEventType.HIDDEN, (info) => {
|
|
72
|
+
setState((prevState) => ({ ...prevState, isLoaded: false }));
|
|
73
|
+
optionsRef.current.onHidden?.(info);
|
|
74
|
+
});
|
|
75
|
+
ad.addAdEventListener(AdEventType.CLICKED, (info) => {
|
|
76
|
+
optionsRef.current.onClicked?.(info);
|
|
77
|
+
});
|
|
78
|
+
ad.addAdEventListener(AdEventType.IMPRESSION_RECORDED, (info) => {
|
|
79
|
+
optionsRef.current.onImpressionRecorded?.(info);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
return ad;
|
|
83
|
+
}, [adUnitId]);
|
|
84
|
+
|
|
85
|
+
const load = useCallback(
|
|
86
|
+
(loadOptions?: UseLightPopupAdLoadOptions) => {
|
|
87
|
+
const ad = createAd();
|
|
88
|
+
if (!ad) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
setState({ isLoaded: false, isLoading: true });
|
|
93
|
+
|
|
94
|
+
if (loadOptions?.configuration) {
|
|
95
|
+
ad.setConfiguration(loadOptions.configuration);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
ad.load();
|
|
99
|
+
},
|
|
100
|
+
[createAd]
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const show = useCallback(() => {
|
|
104
|
+
adRef.current?.show();
|
|
105
|
+
}, []);
|
|
106
|
+
|
|
107
|
+
const isAdReady = useCallback(async () => {
|
|
108
|
+
const isLoaded = (await adRef.current?.isAdReady()) ?? false;
|
|
109
|
+
setState((prevState) => ({ ...prevState, isLoaded }));
|
|
110
|
+
return isLoaded;
|
|
111
|
+
}, []);
|
|
112
|
+
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
adRef.current?.removeAllListeners();
|
|
115
|
+
adRef.current = null;
|
|
116
|
+
setState({ isLoaded: false, isLoading: false });
|
|
117
|
+
}, [adUnitId]);
|
|
118
|
+
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
return () => {
|
|
121
|
+
adRef.current?.removeAllListeners();
|
|
122
|
+
adRef.current = null;
|
|
123
|
+
};
|
|
124
|
+
}, []);
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
...state,
|
|
128
|
+
load,
|
|
129
|
+
show,
|
|
130
|
+
isAdReady,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { RewardedAd } from '../RewardedAd';
|
|
3
|
+
import { AdEventType, RewardedAdEventType } from '../types/AdEvent';
|
|
4
|
+
import type {
|
|
5
|
+
AdDisplayFailedInfo,
|
|
6
|
+
AdInfo,
|
|
7
|
+
AdLoadFailedInfo,
|
|
8
|
+
AdRewardInfo,
|
|
9
|
+
} from '../types/AdInfo';
|
|
10
|
+
|
|
11
|
+
export type UseRewardedAdOptions = {
|
|
12
|
+
onLoaded?: (adInfo: AdInfo) => void;
|
|
13
|
+
onLoadFailed?: (error: AdLoadFailedInfo) => void;
|
|
14
|
+
onClicked?: (adInfo: AdInfo) => void;
|
|
15
|
+
onDisplayed?: (adInfo: AdInfo) => void;
|
|
16
|
+
onFailedToDisplay?: (error: AdDisplayFailedInfo) => void;
|
|
17
|
+
onHidden?: (adInfo: AdInfo) => void;
|
|
18
|
+
onImpressionRecorded?: (adInfo: AdInfo) => void;
|
|
19
|
+
onReceivedReward?: (reward: AdRewardInfo) => void;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type UseRewardedAdResult = {
|
|
23
|
+
isLoaded: boolean;
|
|
24
|
+
isLoading: boolean;
|
|
25
|
+
load: () => void;
|
|
26
|
+
show: (customData?: string | null) => void;
|
|
27
|
+
isAdReady: () => Promise<boolean>;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export function useRewardedAd(
|
|
31
|
+
adUnitId: string | null,
|
|
32
|
+
options: UseRewardedAdOptions = {}
|
|
33
|
+
): UseRewardedAdResult {
|
|
34
|
+
const adRef = useRef<RewardedAd | null>(null);
|
|
35
|
+
const optionsRef = useRef(options);
|
|
36
|
+
optionsRef.current = options;
|
|
37
|
+
const [state, setState] = useState({
|
|
38
|
+
isLoaded: false,
|
|
39
|
+
isLoading: false,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const load = useCallback(() => {
|
|
43
|
+
if (!adUnitId) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const ad = adRef.current;
|
|
48
|
+
if (!ad) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
setState({ isLoaded: false, isLoading: true });
|
|
53
|
+
ad.load();
|
|
54
|
+
}, [adUnitId]);
|
|
55
|
+
|
|
56
|
+
const show = useCallback((customData?: string | null) => {
|
|
57
|
+
adRef.current?.show(customData);
|
|
58
|
+
}, []);
|
|
59
|
+
|
|
60
|
+
const isAdReady = useCallback(async () => {
|
|
61
|
+
const isLoaded = (await adRef.current?.isAdReady()) ?? false;
|
|
62
|
+
setState((prevState) => ({ ...prevState, isLoaded }));
|
|
63
|
+
return isLoaded;
|
|
64
|
+
}, []);
|
|
65
|
+
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
adRef.current?.removeAllListeners();
|
|
68
|
+
adRef.current = null;
|
|
69
|
+
setState({ isLoaded: false, isLoading: false });
|
|
70
|
+
|
|
71
|
+
if (!adUnitId) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const ad = RewardedAd.createForAdRequest(adUnitId);
|
|
76
|
+
adRef.current = ad;
|
|
77
|
+
|
|
78
|
+
ad.addAdEventListener(AdEventType.LOADED, (info) => {
|
|
79
|
+
setState({ isLoaded: true, isLoading: false });
|
|
80
|
+
optionsRef.current.onLoaded?.(info);
|
|
81
|
+
});
|
|
82
|
+
ad.addAdEventListener(AdEventType.LOAD_FAILED, (error) => {
|
|
83
|
+
setState({ isLoaded: false, isLoading: false });
|
|
84
|
+
optionsRef.current.onLoadFailed?.(error);
|
|
85
|
+
});
|
|
86
|
+
ad.addAdEventListener(AdEventType.DISPLAYED, (info) => {
|
|
87
|
+
setState((prevState) => ({ ...prevState, isLoaded: false }));
|
|
88
|
+
optionsRef.current.onDisplayed?.(info);
|
|
89
|
+
});
|
|
90
|
+
ad.addAdEventListener(AdEventType.FAILED_TO_DISPLAY, (error) => {
|
|
91
|
+
setState({ isLoaded: false, isLoading: false });
|
|
92
|
+
optionsRef.current.onFailedToDisplay?.(error);
|
|
93
|
+
});
|
|
94
|
+
ad.addAdEventListener(AdEventType.HIDDEN, (info) => {
|
|
95
|
+
setState((prevState) => ({ ...prevState, isLoaded: false }));
|
|
96
|
+
optionsRef.current.onHidden?.(info);
|
|
97
|
+
});
|
|
98
|
+
ad.addAdEventListener(AdEventType.CLICKED, (info) => {
|
|
99
|
+
optionsRef.current.onClicked?.(info);
|
|
100
|
+
});
|
|
101
|
+
ad.addAdEventListener(AdEventType.IMPRESSION_RECORDED, (info) => {
|
|
102
|
+
optionsRef.current.onImpressionRecorded?.(info);
|
|
103
|
+
});
|
|
104
|
+
ad.addAdEventListener(RewardedAdEventType.RECEIVED_REWARD, (reward) => {
|
|
105
|
+
optionsRef.current.onReceivedReward?.(reward);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
return () => {
|
|
109
|
+
ad.removeAllListeners();
|
|
110
|
+
if (adRef.current === ad) {
|
|
111
|
+
adRef.current = null;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}, [adUnitId]);
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
...state,
|
|
118
|
+
load,
|
|
119
|
+
show,
|
|
120
|
+
isAdReady,
|
|
121
|
+
};
|
|
122
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import NativeDaroModule from './NativeDaroModule';
|
|
2
2
|
|
|
3
3
|
export * from './AdBannerView';
|
|
4
4
|
export * from './types';
|
|
5
5
|
export { InterstitialAd } from './InterstitialAd';
|
|
6
|
+
export { useInterstitialAd } from './hooks/useInterstitialAd';
|
|
7
|
+
export type {
|
|
8
|
+
UseInterstitialAdOptions,
|
|
9
|
+
UseInterstitialAdResult,
|
|
10
|
+
} from './hooks/useInterstitialAd';
|
|
6
11
|
export { RewardedAd } from './RewardedAd';
|
|
12
|
+
export { useRewardedAd } from './hooks/useRewardedAd';
|
|
13
|
+
export type {
|
|
14
|
+
UseRewardedAdOptions,
|
|
15
|
+
UseRewardedAdResult,
|
|
16
|
+
} from './hooks/useRewardedAd';
|
|
7
17
|
export { LightPopupAd } from './LightPopupAd';
|
|
18
|
+
export { useLightPopupAd } from './hooks/useLightPopupAd';
|
|
19
|
+
export type {
|
|
20
|
+
UseLightPopupAdOptions,
|
|
21
|
+
UseLightPopupAdLoadOptions,
|
|
22
|
+
UseLightPopupAdResult,
|
|
23
|
+
} from './hooks/useLightPopupAd';
|
|
8
24
|
|
|
9
25
|
export { NativeAdView } from './nativeAd/NativeAdView';
|
|
10
26
|
export {
|
|
@@ -15,31 +31,14 @@ export {
|
|
|
15
31
|
TitleView,
|
|
16
32
|
} from './nativeAd/NativeAdViewComponents';
|
|
17
33
|
|
|
18
|
-
const LINKING_ERROR =
|
|
19
|
-
`The package 'react-native-daro-m' doesn't seem to be linked. Make sure: \n\n` +
|
|
20
|
-
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
21
|
-
'- You rebuilt the app after installing the package\n' +
|
|
22
|
-
'- You are not using Expo Go\n';
|
|
23
|
-
|
|
24
|
-
const DaroMModule = NativeModules.DaroMModule
|
|
25
|
-
? NativeModules.DaroMModule
|
|
26
|
-
: new Proxy(
|
|
27
|
-
{},
|
|
28
|
-
{
|
|
29
|
-
get() {
|
|
30
|
-
throw new Error(LINKING_ERROR);
|
|
31
|
-
},
|
|
32
|
-
}
|
|
33
|
-
);
|
|
34
|
-
|
|
35
34
|
export async function initialize() {
|
|
36
|
-
await
|
|
35
|
+
await NativeDaroModule.initializeSdk();
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
export async function showMediationDebugger() {
|
|
40
|
-
await
|
|
39
|
+
await NativeDaroModule.showMediationDebugger();
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
export async function setUserId(userId:
|
|
44
|
-
await
|
|
42
|
+
export async function setUserId(userId: string) {
|
|
43
|
+
await NativeDaroModule.setUserId(userId);
|
|
45
44
|
}
|