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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
package com.daro.reactnative.view
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.view.View
|
|
5
|
+
import android.view.ViewGroup
|
|
6
|
+
import android.view.ViewTreeObserver
|
|
7
|
+
import android.widget.FrameLayout
|
|
8
|
+
|
|
9
|
+
class DaroMediaView(context: Context) : FrameLayout(context) {
|
|
10
|
+
|
|
11
|
+
private var relayoutPending = false
|
|
12
|
+
private var scanZeroCount = 0
|
|
13
|
+
private var scanViewCount = 0
|
|
14
|
+
private var lastZeroSignature = 0L
|
|
15
|
+
private var zeroSizeRelayoutAttempts = 0
|
|
16
|
+
|
|
17
|
+
private companion object {
|
|
18
|
+
private const val MAX_ZERO_SIZE_RELAYOUT_ATTEMPTS = 3
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private val relayoutRunnable = Runnable {
|
|
22
|
+
relayoutPending = false
|
|
23
|
+
relayoutChildren()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private val preDrawListener = ViewTreeObserver.OnPreDrawListener {
|
|
27
|
+
if (width > 0 && height > 0 && childCount > 0) {
|
|
28
|
+
scanZeroCount = 0
|
|
29
|
+
scanViewCount = 0
|
|
30
|
+
scanSubtree(this)
|
|
31
|
+
|
|
32
|
+
if (scanZeroCount == 0) {
|
|
33
|
+
lastZeroSignature = 0L
|
|
34
|
+
zeroSizeRelayoutAttempts = 0
|
|
35
|
+
} else {
|
|
36
|
+
val signature = (scanZeroCount.toLong() shl 32) or scanViewCount.toLong()
|
|
37
|
+
if (signature != lastZeroSignature) {
|
|
38
|
+
lastZeroSignature = signature
|
|
39
|
+
zeroSizeRelayoutAttempts = 0
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (zeroSizeRelayoutAttempts < MAX_ZERO_SIZE_RELAYOUT_ATTEMPTS) {
|
|
43
|
+
zeroSizeRelayoutAttempts++
|
|
44
|
+
relayoutChildren()
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
true
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
override fun requestLayout() {
|
|
52
|
+
super.requestLayout()
|
|
53
|
+
scheduleRelayout()
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
override fun onViewAdded(child: View?) {
|
|
57
|
+
super.onViewAdded(child)
|
|
58
|
+
relayoutChildren()
|
|
59
|
+
scheduleRelayout()
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
override fun onAttachedToWindow() {
|
|
63
|
+
super.onAttachedToWindow()
|
|
64
|
+
relayoutChildren()
|
|
65
|
+
relayoutPending = false
|
|
66
|
+
removeCallbacks(relayoutRunnable)
|
|
67
|
+
scheduleRelayout()
|
|
68
|
+
viewTreeObserver.addOnPreDrawListener(preDrawListener)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
override fun onDetachedFromWindow() {
|
|
72
|
+
viewTreeObserver.removeOnPreDrawListener(preDrawListener)
|
|
73
|
+
removeCallbacks(relayoutRunnable)
|
|
74
|
+
relayoutPending = false
|
|
75
|
+
super.onDetachedFromWindow()
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
private fun scheduleRelayout() {
|
|
79
|
+
lastZeroSignature = 0L
|
|
80
|
+
zeroSizeRelayoutAttempts = 0
|
|
81
|
+
|
|
82
|
+
if (relayoutPending) return
|
|
83
|
+
|
|
84
|
+
relayoutPending = true
|
|
85
|
+
post(relayoutRunnable)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private fun relayoutChildren() {
|
|
89
|
+
val width = width
|
|
90
|
+
val height = height
|
|
91
|
+
|
|
92
|
+
if (width <= 0 || height <= 0) return
|
|
93
|
+
|
|
94
|
+
for (i in 0 until childCount) {
|
|
95
|
+
val child = getChildAt(i)
|
|
96
|
+
if (child.visibility == GONE) continue
|
|
97
|
+
|
|
98
|
+
forceLayoutRecursive(child)
|
|
99
|
+
child.measure(
|
|
100
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
101
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
102
|
+
)
|
|
103
|
+
child.layout(0, 0, width, height)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private fun forceLayoutRecursive(view: View) {
|
|
108
|
+
view.forceLayout()
|
|
109
|
+
if (view is ViewGroup) {
|
|
110
|
+
for (i in 0 until view.childCount) forceLayoutRecursive(view.getChildAt(i))
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private fun scanSubtree(parent: ViewGroup) {
|
|
115
|
+
for (i in 0 until parent.childCount) {
|
|
116
|
+
val child = parent.getChildAt(i)
|
|
117
|
+
scanViewCount++
|
|
118
|
+
if (child.visibility != View.VISIBLE) continue
|
|
119
|
+
if (child.width <= 0 || child.height <= 0) scanZeroCount++
|
|
120
|
+
if (child is ViewGroup) scanSubtree(child)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
package com.daro.reactnative
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Promise
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
6
|
+
import com.facebook.react.bridge.ReactMethod
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap
|
|
8
|
+
|
|
9
|
+
abstract class DaroMModuleSpec(reactContext: ReactApplicationContext) :
|
|
10
|
+
ReactContextBaseJavaModule(reactContext) {
|
|
11
|
+
|
|
12
|
+
override fun getName(): String = DaroMModule.NAME
|
|
13
|
+
|
|
14
|
+
protected abstract fun getTypedExportedConstants(): MutableMap<String, Any>
|
|
15
|
+
|
|
16
|
+
override fun getConstants(): MutableMap<String, Any> = getTypedExportedConstants()
|
|
17
|
+
|
|
18
|
+
@ReactMethod
|
|
19
|
+
abstract fun addListener(eventName: String)
|
|
20
|
+
|
|
21
|
+
@ReactMethod
|
|
22
|
+
abstract fun removeListeners(count: Double)
|
|
23
|
+
|
|
24
|
+
@ReactMethod
|
|
25
|
+
abstract fun isInitialized(promise: Promise)
|
|
26
|
+
|
|
27
|
+
@ReactMethod
|
|
28
|
+
abstract fun initializeSdk(promise: Promise)
|
|
29
|
+
|
|
30
|
+
@ReactMethod
|
|
31
|
+
abstract fun setUserId(userId: String, promise: Promise)
|
|
32
|
+
|
|
33
|
+
@ReactMethod
|
|
34
|
+
abstract fun showMediationDebugger(promise: Promise)
|
|
35
|
+
|
|
36
|
+
@ReactMethod
|
|
37
|
+
abstract fun isInterstitialReady(requestId: Double, adUnitId: String, promise: Promise)
|
|
38
|
+
|
|
39
|
+
@ReactMethod
|
|
40
|
+
abstract fun loadInterstitial(requestId: Double, adUnitId: String, promise: Promise)
|
|
41
|
+
|
|
42
|
+
@ReactMethod
|
|
43
|
+
abstract fun showInterstitial(requestId: Double, adUnitId: String, promise: Promise)
|
|
44
|
+
|
|
45
|
+
@ReactMethod
|
|
46
|
+
abstract fun isRewardedAdReady(requestId: Double, adUnitId: String, promise: Promise)
|
|
47
|
+
|
|
48
|
+
@ReactMethod
|
|
49
|
+
abstract fun loadRewardedAd(requestId: Double, adUnitId: String, promise: Promise)
|
|
50
|
+
|
|
51
|
+
@ReactMethod
|
|
52
|
+
abstract fun showRewardedAd(
|
|
53
|
+
requestId: Double,
|
|
54
|
+
adUnitId: String,
|
|
55
|
+
customData: String?,
|
|
56
|
+
promise: Promise,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
@ReactMethod
|
|
60
|
+
abstract fun isAppOpenAdReady(requestId: Double, adUnitId: String, promise: Promise)
|
|
61
|
+
|
|
62
|
+
@ReactMethod
|
|
63
|
+
abstract fun loadAppOpenAd(requestId: Double, adUnitId: String, promise: Promise)
|
|
64
|
+
|
|
65
|
+
@ReactMethod
|
|
66
|
+
abstract fun showAppOpenAd(
|
|
67
|
+
requestId: Double,
|
|
68
|
+
adUnitId: String,
|
|
69
|
+
placement: String?,
|
|
70
|
+
customData: String?,
|
|
71
|
+
promise: Promise,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
@ReactMethod
|
|
75
|
+
abstract fun isLightPopupReady(requestId: Double, adUnitId: String, promise: Promise)
|
|
76
|
+
|
|
77
|
+
@ReactMethod
|
|
78
|
+
abstract fun loadLightPopup(requestId: Double, adUnitId: String, promise: Promise)
|
|
79
|
+
|
|
80
|
+
@ReactMethod
|
|
81
|
+
abstract fun showLightPopup(requestId: Double, adUnitId: String, promise: Promise)
|
|
82
|
+
|
|
83
|
+
@ReactMethod
|
|
84
|
+
abstract fun setLightPopupAdConfiguration(
|
|
85
|
+
requestId: Double,
|
|
86
|
+
adUnitId: String,
|
|
87
|
+
configuration: ReadableMap,
|
|
88
|
+
promise: Promise,
|
|
89
|
+
)
|
|
90
|
+
}
|
package/app.plugin.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./plugin/build').default;
|
|
@@ -1,42 +1,49 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React
|
|
2
2
|
|
|
3
3
|
// MARK: - AppOpen Ad Methods
|
|
4
4
|
|
|
5
5
|
extension DaroMModule {
|
|
6
|
-
|
|
7
|
-
@objc(isAppOpenAdReady
|
|
6
|
+
|
|
7
|
+
@objc(isAppOpenAdReady:adUnitId:resolve:reject:)
|
|
8
8
|
func isAppOpenAdReady(
|
|
9
|
-
|
|
9
|
+
requestId: Double,
|
|
10
|
+
adUnitId: String,
|
|
10
11
|
resolve: RCTPromiseResolveBlock,
|
|
11
12
|
reject: RCTPromiseRejectBlock
|
|
12
13
|
) {
|
|
14
|
+
let requestId = Int(requestId)
|
|
13
15
|
if !Self.sdkInitialized {
|
|
14
16
|
DaroMModule.logger.debug("[DaroMMobileAds] !isInitialized")
|
|
15
17
|
resolve(false)
|
|
16
18
|
return
|
|
17
19
|
}
|
|
18
|
-
resolve(appOpenAds[
|
|
20
|
+
resolve(appOpenAds[requestId]?.loadedAd != nil)
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
@objc(loadAppOpenAd
|
|
23
|
+
@objc(loadAppOpenAd:adUnitId:resolve:reject:)
|
|
22
24
|
func loadAppOpenAd(
|
|
23
|
-
|
|
25
|
+
requestId: Double,
|
|
26
|
+
adUnitId: String,
|
|
24
27
|
resolve: RCTPromiseResolveBlock,
|
|
25
28
|
reject: RCTPromiseRejectBlock
|
|
26
29
|
) {
|
|
27
|
-
|
|
30
|
+
let requestId = Int(requestId)
|
|
31
|
+
let appOpenAdLoader = retrieveAppOpenLoader(requestId: requestId, adUnitId: adUnitId)
|
|
28
32
|
appOpenAdLoader.loadAd()
|
|
29
|
-
|
|
33
|
+
resolve(Void())
|
|
30
34
|
}
|
|
31
35
|
|
|
32
|
-
@objc(showAppOpenAd
|
|
36
|
+
@objc(showAppOpenAd:adUnitId:placement:customData:resolve:reject:)
|
|
33
37
|
func showAppOpenAd(
|
|
34
|
-
|
|
38
|
+
requestId: Double,
|
|
39
|
+
adUnitId: String,
|
|
40
|
+
placement: String?,
|
|
35
41
|
customData: String?,
|
|
36
42
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
37
43
|
reject: RCTPromiseRejectBlock
|
|
38
44
|
) {
|
|
39
|
-
|
|
45
|
+
let requestId = Int(requestId)
|
|
46
|
+
guard let loadedAd = appOpenAds[requestId]?.loadedAd else {
|
|
40
47
|
reject("APPOPEN_NOT_LOADED", "AppOpen ad not loaded", nil)
|
|
41
48
|
return
|
|
42
49
|
}
|
|
@@ -46,53 +53,52 @@ extension DaroMModule {
|
|
|
46
53
|
}
|
|
47
54
|
}
|
|
48
55
|
|
|
49
|
-
func retrieveAppOpenLoader(
|
|
50
|
-
if let appOpenLoader = appOpenAds[
|
|
56
|
+
func retrieveAppOpenLoader(requestId: Int, adUnitId: String) -> DaroAppOpenAdLoader {
|
|
57
|
+
if let appOpenLoader = appOpenAds[requestId] {
|
|
51
58
|
return appOpenLoader.loader
|
|
52
59
|
} else {
|
|
53
|
-
let appOpenLoader = DaroAppOpenAdLoader(unit: DaroAdUnit(unitId:
|
|
60
|
+
let appOpenLoader = DaroAppOpenAdLoader(unit: DaroAdUnit(unitId: adUnitId))
|
|
54
61
|
appOpenLoader.listener.onAdClicked = { [weak self] adInfo in
|
|
55
|
-
DaroMModule.logger.debug("[DARO] Sample
|
|
56
|
-
self?.sendEvent(with: .onAppOpenAdClickedEvent, body: adInfo?.toBody)
|
|
62
|
+
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad clicked")
|
|
63
|
+
self?.sendEvent(with: .onAppOpenAdClickedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
appOpenLoader.listener.onAdImpression = { [weak self] adInfo in
|
|
60
|
-
DaroMModule.logger.debug("[DARO] Sample
|
|
61
|
-
self?.
|
|
62
|
-
self?.sendEvent(with: .onAppOpenAdImpressionRecordedEvent, body: adInfo?.toBody)
|
|
67
|
+
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad impression")
|
|
68
|
+
self?.appOpenAds[requestId]?.loadedAd = nil
|
|
69
|
+
self?.sendEvent(with: .onAppOpenAdImpressionRecordedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
appOpenLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
|
|
66
|
-
DaroMModule.logger.debug("[DARO] Sample
|
|
67
|
-
self?.appOpenAds[
|
|
68
|
-
self?.sendEvent(with: .onAppOpenAdLoadedEvent, body: adInfo?.toBody)
|
|
69
|
-
self?.setupAppOpenListener(for: ad)
|
|
73
|
+
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad loaded")
|
|
74
|
+
self?.appOpenAds[requestId]?.loadedAd = ad
|
|
75
|
+
self?.sendEvent(with: .onAppOpenAdLoadedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
76
|
+
self?.setupAppOpenListener(for: ad, requestId: requestId)
|
|
70
77
|
}
|
|
71
78
|
|
|
72
79
|
appOpenLoader.listener.onAdLoadFail = { [weak self] error in
|
|
73
|
-
DaroMModule.logger.debug("[DARO] Sample
|
|
74
|
-
self?.sendEvent(with: .onAppOpenAdLoadFailedEvent, body: error.toBody)
|
|
80
|
+
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad failed: \(error)")
|
|
81
|
+
self?.sendEvent(with: .onAppOpenAdLoadFailedEvent, body: error.toBody(requestId: requestId))
|
|
75
82
|
}
|
|
76
|
-
self.appOpenAds[
|
|
83
|
+
self.appOpenAds[requestId] = AppOpenAd(loader: appOpenLoader)
|
|
77
84
|
return appOpenLoader
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
|
|
81
|
-
private func setupAppOpenListener(for ad: DaroAppOpenAd) {
|
|
88
|
+
private func setupAppOpenListener(for ad: DaroAppOpenAd, requestId: Int) {
|
|
82
89
|
ad.appOpenAdListener.onShown = { [weak self] adInfo in
|
|
83
90
|
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad displayed")
|
|
84
|
-
self?.sendEvent(with: .onAppOpenAdDisplayedEvent, body: adInfo?.toBody)
|
|
91
|
+
self?.sendEvent(with: .onAppOpenAdDisplayedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
85
92
|
}
|
|
86
93
|
|
|
87
94
|
ad.appOpenAdListener.onDismiss = { [weak self] adInfo in
|
|
88
95
|
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad hidden")
|
|
89
|
-
self?.sendEvent(with: .onAppOpenAdHiddenEvent, body: adInfo?.toBody)
|
|
96
|
+
self?.sendEvent(with: .onAppOpenAdHiddenEvent, body: adInfo?.toBody(requestId: requestId))
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
ad.appOpenAdListener.onFailedToShow = { [weak self] adInfo, error in
|
|
93
100
|
DaroMModule.logger.debug("[DARO] Sample AppOpen Ad failed to display")
|
|
94
|
-
self?.sendEvent(with: .onAppOpenAdFailedToDisplayEvent, body: adInfo?.toBody)
|
|
101
|
+
self?.sendEvent(with: .onAppOpenAdFailedToDisplayEvent, body: adInfo?.toBody(requestId: requestId))
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
104
|
}
|
|
98
|
-
|
|
@@ -1,41 +1,47 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React
|
|
2
2
|
|
|
3
3
|
// MARK: - Interstitial Ad Methods
|
|
4
4
|
|
|
5
5
|
extension DaroMModule {
|
|
6
|
-
|
|
7
|
-
@objc(isInterstitialReady
|
|
6
|
+
|
|
7
|
+
@objc(isInterstitialReady:adUnitId:resolve:reject:)
|
|
8
8
|
func isInterstitialReady(
|
|
9
|
-
|
|
9
|
+
requestId: Double,
|
|
10
|
+
adUnitId: String,
|
|
10
11
|
resolve: RCTPromiseResolveBlock,
|
|
11
12
|
reject: RCTPromiseRejectBlock
|
|
12
13
|
) {
|
|
14
|
+
let requestId = Int(requestId)
|
|
13
15
|
if !Self.sdkInitialized {
|
|
14
16
|
DaroMModule.logger.debug("[DaroMMobileAds] !isInitialized")
|
|
15
17
|
resolve(false)
|
|
16
18
|
return
|
|
17
19
|
}
|
|
18
|
-
resolve(interstitials[
|
|
20
|
+
resolve(interstitials[requestId]?.loadedAd != nil)
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
@objc(loadInterstitial
|
|
23
|
+
@objc(loadInterstitial:adUnitId:resolve:reject:)
|
|
22
24
|
func loadInterstitial(
|
|
23
|
-
|
|
25
|
+
requestId: Double,
|
|
26
|
+
adUnitId: String,
|
|
24
27
|
resolve: RCTPromiseResolveBlock,
|
|
25
28
|
reject: RCTPromiseRejectBlock
|
|
26
29
|
) {
|
|
27
|
-
let
|
|
30
|
+
let requestId = Int(requestId)
|
|
31
|
+
let interstitialLoader = retrieveInterstitialLoader(requestId: requestId, adUnitId: adUnitId)
|
|
28
32
|
interstitialLoader.loadAd()
|
|
29
33
|
resolve(Void())
|
|
30
34
|
}
|
|
31
35
|
|
|
32
|
-
@objc(showInterstitial
|
|
36
|
+
@objc(showInterstitial:adUnitId:resolve:reject:)
|
|
33
37
|
func showInterstitial(
|
|
34
|
-
|
|
38
|
+
requestId: Double,
|
|
39
|
+
adUnitId: String,
|
|
35
40
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
36
41
|
reject: @escaping RCTPromiseRejectBlock
|
|
37
42
|
) {
|
|
38
|
-
|
|
43
|
+
let requestId = Int(requestId)
|
|
44
|
+
guard let loadedAd = interstitials[requestId]?.loadedAd else {
|
|
39
45
|
reject("INTERSTITIAL_NOT_LOADED", "Interstitial ad not loaded", nil)
|
|
40
46
|
return
|
|
41
47
|
}
|
|
@@ -49,52 +55,52 @@ extension DaroMModule {
|
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
57
|
|
|
52
|
-
func retrieveInterstitialLoader(
|
|
53
|
-
if let interstitialAd = interstitials[
|
|
58
|
+
func retrieveInterstitialLoader(requestId: Int, adUnitId: String) -> DaroInterstitialAdLoader {
|
|
59
|
+
if let interstitialAd = interstitials[requestId] {
|
|
54
60
|
return interstitialAd.loader
|
|
55
61
|
} else {
|
|
56
|
-
let interstitialLoader = DaroInterstitialAdLoader(unit: DaroAdUnit(unitId:
|
|
62
|
+
let interstitialLoader = DaroInterstitialAdLoader(unit: DaroAdUnit(unitId: adUnitId))
|
|
57
63
|
interstitialLoader.listener.onAdClicked = { [weak self] adInfo in
|
|
58
64
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad clicked")
|
|
59
|
-
self?.sendEvent(with: .onInterstitialClickedEvent, body: adInfo?.toBody)
|
|
65
|
+
self?.sendEvent(with: .onInterstitialClickedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
interstitialLoader.listener.onAdImpression = { [weak self] adInfo in
|
|
63
69
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad impression")
|
|
64
|
-
self?.interstitials[
|
|
65
|
-
self?.sendEvent(with: .onInterstitialAdImpressionRecordedEvent, body: adInfo?.toBody)
|
|
70
|
+
self?.interstitials[requestId]?.loadedAd = nil
|
|
71
|
+
self?.sendEvent(with: .onInterstitialAdImpressionRecordedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
66
72
|
}
|
|
67
73
|
|
|
68
74
|
interstitialLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
|
|
69
75
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad loaded")
|
|
70
|
-
self?.interstitials[
|
|
71
|
-
self?.sendEvent(with: .onInterstitialLoadedEvent, body: adInfo?.toBody)
|
|
72
|
-
self?.setupInterstitialListener(for: ad)
|
|
76
|
+
self?.interstitials[requestId]?.loadedAd = ad
|
|
77
|
+
self?.sendEvent(with: .onInterstitialLoadedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
78
|
+
self?.setupInterstitialListener(for: ad, requestId: requestId)
|
|
73
79
|
}
|
|
74
80
|
|
|
75
81
|
interstitialLoader.listener.onAdLoadFail = { [weak self] error in
|
|
76
82
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad failed: \(error)")
|
|
77
|
-
self?.sendEvent(with: .onInterstitialLoadFailedEvent, body: error.toBody)
|
|
83
|
+
self?.sendEvent(with: .onInterstitialLoadFailedEvent, body: error.toBody(requestId: requestId))
|
|
78
84
|
}
|
|
79
|
-
self.interstitials[
|
|
85
|
+
self.interstitials[requestId] = InterstitialAd(loader: interstitialLoader)
|
|
80
86
|
return interstitialLoader
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
89
|
|
|
84
|
-
private func setupInterstitialListener(for ad: DaroInterstitialAd) {
|
|
90
|
+
private func setupInterstitialListener(for ad: DaroInterstitialAd, requestId: Int) {
|
|
85
91
|
ad.interstitialListener.onShown = { [weak self] adInfo in
|
|
86
92
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad displayed")
|
|
87
|
-
self?.sendEvent(with: .onInterstitialDisplayedEvent, body: adInfo?.toBody)
|
|
93
|
+
self?.sendEvent(with: .onInterstitialDisplayedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
ad.interstitialListener.onDismiss = { [weak self] adInfo in
|
|
91
97
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad hidden")
|
|
92
|
-
self?.sendEvent(with: .onInterstitialHiddenEvent, body: adInfo?.toBody)
|
|
98
|
+
self?.sendEvent(with: .onInterstitialHiddenEvent, body: adInfo?.toBody(requestId: requestId))
|
|
93
99
|
}
|
|
94
100
|
|
|
95
101
|
ad.interstitialListener.onFailedToShow = { [weak self] adInfo, error in
|
|
96
102
|
DaroMModule.logger.debug("[DARO] Sample Interstitial Ad failed to display")
|
|
97
|
-
self?.sendEvent(with: .onInterstitialAdFailedToDisplayEvent, body: adInfo?.toBody)
|
|
103
|
+
self?.sendEvent(with: .onInterstitialAdFailedToDisplayEvent, body: adInfo?.toBody(requestId: requestId))
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
106
|
}
|
|
@@ -1,74 +1,84 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React
|
|
2
2
|
import UIKit
|
|
3
3
|
// MARK: - LightPopup Ad
|
|
4
4
|
extension DaroMModule {
|
|
5
5
|
|
|
6
|
-
@objc(isLightPopupReady
|
|
6
|
+
@objc(isLightPopupReady:adUnitId:resolve:reject:)
|
|
7
7
|
func isLightPopupReady(
|
|
8
|
-
|
|
8
|
+
requestId: Double,
|
|
9
|
+
adUnitId: String,
|
|
9
10
|
resolve: RCTPromiseResolveBlock,
|
|
10
11
|
reject: RCTPromiseRejectBlock
|
|
11
12
|
) {
|
|
13
|
+
let requestId = Int(requestId)
|
|
12
14
|
if !Self.sdkInitialized {
|
|
13
15
|
DaroMModule.logger.debug("[DaroMMobileAds] !isInitialized")
|
|
14
16
|
resolve(false)
|
|
15
17
|
return
|
|
16
18
|
}
|
|
17
|
-
resolve(lightPopups[
|
|
19
|
+
resolve(lightPopups[requestId]?.loadedAd != nil)
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
@objc(loadLightPopup
|
|
22
|
+
@objc(loadLightPopup:adUnitId:resolve:reject:)
|
|
21
23
|
func loadLightPopup(
|
|
22
|
-
|
|
24
|
+
requestId: Double,
|
|
25
|
+
adUnitId: String,
|
|
23
26
|
resolve: RCTPromiseResolveBlock,
|
|
24
27
|
reject: RCTPromiseRejectBlock
|
|
25
28
|
) {
|
|
26
|
-
let
|
|
29
|
+
let requestId = Int(requestId)
|
|
30
|
+
let lightPopupLoader = retrieveLightPopupLoader(requestId: requestId, adUnitId: adUnitId)
|
|
27
31
|
lightPopupLoader.loadAd()
|
|
28
32
|
resolve(Void())
|
|
29
33
|
}
|
|
30
34
|
|
|
31
|
-
@objc(showLightPopup
|
|
35
|
+
@objc(showLightPopup:adUnitId:resolve:reject:)
|
|
32
36
|
func showLightPopup(
|
|
33
|
-
|
|
37
|
+
requestId: Double,
|
|
38
|
+
adUnitId: String,
|
|
34
39
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
35
40
|
reject: @escaping RCTPromiseRejectBlock
|
|
36
41
|
) {
|
|
37
|
-
|
|
42
|
+
let requestId = Int(requestId)
|
|
43
|
+
guard let loadedAd = lightPopups[requestId]?.loadedAd else {
|
|
38
44
|
reject("LIGHTPOPUP_NOT_LOADED", "LightPopup ad not loaded", nil)
|
|
39
45
|
return
|
|
40
46
|
}
|
|
47
|
+
let reqIdInt = requestId
|
|
41
48
|
executeOnMainThread { [weak self] in
|
|
42
49
|
guard let viewController = UIApplication.shared.windows.first?.rootViewController else {
|
|
43
50
|
reject("VIEW_CONTROLLER_NOT_FOUND", "Root view controller not found", nil)
|
|
44
51
|
return
|
|
45
52
|
}
|
|
46
|
-
self?.applyStoredConfiguration(to: loadedAd, for:
|
|
53
|
+
self?.applyStoredConfiguration(to: loadedAd, for: reqIdInt)
|
|
47
54
|
loadedAd.show(viewController: viewController)
|
|
48
55
|
resolve(Void())
|
|
49
56
|
}
|
|
50
57
|
}
|
|
51
58
|
|
|
52
|
-
@objc(setLightPopupAdConfiguration
|
|
59
|
+
@objc(setLightPopupAdConfiguration:adUnitId:configuration:resolve:reject:)
|
|
53
60
|
func setLightPopupAdConfiguration(
|
|
54
|
-
|
|
61
|
+
requestId: Double,
|
|
62
|
+
adUnitId: String,
|
|
55
63
|
configuration: [String: Any],
|
|
56
64
|
resolve: RCTPromiseResolveBlock,
|
|
57
65
|
reject: RCTPromiseRejectBlock
|
|
58
66
|
) {
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
let reqIdInt = Int(requestId)
|
|
68
|
+
guard let loadedAd = lightPopups[reqIdInt]?.loadedAd else {
|
|
69
|
+
lightPopupConfigurations[reqIdInt] = configuration
|
|
61
70
|
resolve(Void())
|
|
62
71
|
return
|
|
63
72
|
}
|
|
73
|
+
lightPopupConfigurations[reqIdInt] = configuration
|
|
64
74
|
executeOnMainThread { [weak self] in
|
|
65
|
-
self?.applyStoredConfiguration(to: loadedAd, for:
|
|
75
|
+
self?.applyStoredConfiguration(to: loadedAd, for: reqIdInt)
|
|
66
76
|
}
|
|
67
77
|
resolve(Void())
|
|
68
78
|
}
|
|
69
79
|
|
|
70
|
-
func applyStoredConfiguration(to ad: DaroLightPopupAd, for
|
|
71
|
-
if let configuration = lightPopupConfigurations[
|
|
80
|
+
func applyStoredConfiguration(to ad: DaroLightPopupAd, for requestId: Int) {
|
|
81
|
+
if let configuration = lightPopupConfigurations[requestId] {
|
|
72
82
|
let lightPopupConfig = DaroLightPopupConfiguration()
|
|
73
83
|
|
|
74
84
|
func setColorIfValid(_ key: String, setter: (UIColor) -> Void) {
|
|
@@ -95,47 +105,47 @@ extension DaroMModule {
|
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
|
|
98
|
-
func retrieveLightPopupLoader(
|
|
99
|
-
if let lightPopupAd = lightPopups[
|
|
108
|
+
func retrieveLightPopupLoader(requestId: Int, adUnitId: String) -> DaroLightPopupAdLoader {
|
|
109
|
+
if let lightPopupAd = lightPopups[requestId] {
|
|
100
110
|
return lightPopupAd.loader
|
|
101
111
|
} else {
|
|
102
|
-
let lightPopupLoader = DaroLightPopupAdLoader(unit: DaroAdUnit(unitId:
|
|
112
|
+
let lightPopupLoader = DaroLightPopupAdLoader(unit: DaroAdUnit(unitId: adUnitId))
|
|
103
113
|
|
|
104
114
|
lightPopupLoader.listener.onAdClicked = { [weak self] adInfo in
|
|
105
|
-
self?.sendEvent(with: .onLightPopupClickedEvent, body: adInfo?.toBody)
|
|
115
|
+
self?.sendEvent(with: .onLightPopupClickedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
106
116
|
}
|
|
107
117
|
|
|
108
118
|
lightPopupLoader.listener.onAdImpression = { [weak self] adInfo in
|
|
109
|
-
self?.lightPopups[
|
|
110
|
-
self?.sendEvent(with: .onLightPopupAdImpressionRecordedEvent, body: adInfo?.toBody)
|
|
119
|
+
self?.lightPopups[requestId]?.loadedAd = nil
|
|
120
|
+
self?.sendEvent(with: .onLightPopupAdImpressionRecordedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
111
121
|
}
|
|
112
122
|
|
|
113
123
|
lightPopupLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
|
|
114
|
-
self?.lightPopups[
|
|
115
|
-
self?.sendEvent(with: .onLightPopupLoadedEvent, body: adInfo?.toBody)
|
|
116
|
-
self?.setupLightPopupListener(for: ad)
|
|
124
|
+
self?.lightPopups[requestId]?.loadedAd = ad
|
|
125
|
+
self?.sendEvent(with: .onLightPopupLoadedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
126
|
+
self?.setupLightPopupListener(for: ad, requestId: requestId)
|
|
117
127
|
}
|
|
118
128
|
|
|
119
129
|
lightPopupLoader.listener.onAdLoadFail = { [weak self] error in
|
|
120
|
-
self?.sendEvent(with: .onLightPopupLoadFailedEvent, body: error.toBody)
|
|
130
|
+
self?.sendEvent(with: .onLightPopupLoadFailedEvent, body: error.toBody(requestId: requestId))
|
|
121
131
|
}
|
|
122
132
|
|
|
123
|
-
self.lightPopups[
|
|
133
|
+
self.lightPopups[requestId] = LightPopupAd(loader: lightPopupLoader)
|
|
124
134
|
return lightPopupLoader
|
|
125
135
|
}
|
|
126
136
|
}
|
|
127
137
|
|
|
128
|
-
private func setupLightPopupListener(for ad: DaroLightPopupAd) {
|
|
138
|
+
private func setupLightPopupListener(for ad: DaroLightPopupAd, requestId: Int) {
|
|
129
139
|
ad.lightPopupAdListener.onShown = { [weak self] adInfo in
|
|
130
|
-
self?.sendEvent(with: .onLightPopupDisplayedEvent, body: adInfo?.toBody)
|
|
140
|
+
self?.sendEvent(with: .onLightPopupDisplayedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
131
141
|
}
|
|
132
142
|
|
|
133
143
|
ad.lightPopupAdListener.onDismiss = { [weak self] adInfo in
|
|
134
|
-
self?.sendEvent(with: .onLightPopupHiddenEvent, body: adInfo?.toBody)
|
|
144
|
+
self?.sendEvent(with: .onLightPopupHiddenEvent, body: adInfo?.toBody(requestId: requestId))
|
|
135
145
|
}
|
|
136
146
|
|
|
137
147
|
ad.lightPopupAdListener.onFailedToShow = { [weak self] adInfo, error in
|
|
138
|
-
self?.sendEvent(with: .onLightPopupAdFailedToDisplayEvent, body: adInfo?.toBody)
|
|
148
|
+
self?.sendEvent(with: .onLightPopupAdFailedToDisplayEvent, body: adInfo?.toBody(requestId: requestId))
|
|
139
149
|
}
|
|
140
150
|
}
|
|
141
151
|
|