react-native-daro 1.0.0
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 +20 -0
- package/README.md +47 -0
- package/android/build.gradle +99 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +7 -0
- package/android/src/main/java/com/darom/DaroMAdBannerViewManager.kt +114 -0
- package/android/src/main/java/com/darom/DaroMAdNativeViewManager.kt +133 -0
- package/android/src/main/java/com/darom/DaroMModule.kt +194 -0
- package/android/src/main/java/com/darom/DaroMPackage.kt +21 -0
- package/android/src/main/java/com/darom/constants/InternalDaroMBannerSize.kt +23 -0
- package/android/src/main/java/com/darom/event/DaroMEvent.kt +57 -0
- package/android/src/main/java/com/darom/impl/DaroMBannerViewModuleImpl.kt +10 -0
- package/android/src/main/java/com/darom/impl/DaroMInterstitialModuleImpl.kt +113 -0
- package/android/src/main/java/com/darom/impl/DaroMLightPopupModuleImpl.kt +149 -0
- package/android/src/main/java/com/darom/impl/DaroMRewardedAdModuleImpl.kt +128 -0
- package/android/src/main/java/com/darom/util/AdInfoUtil.kt +51 -0
- package/android/src/main/java/com/darom/util/EventEmitterUtil.kt +24 -0
- package/android/src/main/java/com/darom/view/DaroMAdBannerViewContainer.kt +132 -0
- package/android/src/main/java/com/darom/view/DaroMAdNativeViewContainer.kt +372 -0
- package/android/src/main/res/layout/layout_activity_transparent.xml +7 -0
- package/android/src/main/res/values/styles.xml +11 -0
- package/ios/Daro+Extensions.swift +196 -0
- package/ios/DaroM-Bridging-Header.h +6 -0
- package/ios/DaroMAdBannerViewManager.m +15 -0
- package/ios/DaroMAdBannerViewManager.swift +87 -0
- package/ios/DaroMModule+AppOpen.swift +98 -0
- package/ios/DaroMModule+Interstitial.swift +100 -0
- package/ios/DaroMModule+LightPopup.swift +166 -0
- package/ios/DaroMModule+Rewarded.swift +118 -0
- package/ios/DaroMModule.mm +45 -0
- package/ios/DaroMModule.swift +218 -0
- package/ios/DaroMNativeAdViewManager.m +26 -0
- package/ios/DaroMNativeAdViewManager.swift +291 -0
- package/lib/commonjs/AdBannerView.js +115 -0
- package/lib/commonjs/AdBannerView.js.map +1 -0
- package/lib/commonjs/AppOpenAd.js +92 -0
- package/lib/commonjs/AppOpenAd.js.map +1 -0
- package/lib/commonjs/ErrorCode.js +11 -0
- package/lib/commonjs/ErrorCode.js.map +1 -0
- package/lib/commonjs/EventEmitter.js +30 -0
- package/lib/commonjs/EventEmitter.js.map +1 -0
- package/lib/commonjs/InterstitialAd.js +92 -0
- package/lib/commonjs/InterstitialAd.js.map +1 -0
- package/lib/commonjs/LightPopupAd.js +135 -0
- package/lib/commonjs/LightPopupAd.js.map +1 -0
- package/lib/commonjs/RewardedAd.js +105 -0
- package/lib/commonjs/RewardedAd.js.map +1 -0
- package/lib/commonjs/index.js +126 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/nativeAd/NativeAdView.js +103 -0
- package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -0
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js +189 -0
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -0
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js +29 -0
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -0
- package/lib/commonjs/types/AdBannerViewProps.js +6 -0
- package/lib/commonjs/types/AdBannerViewProps.js.map +1 -0
- package/lib/commonjs/types/AdEvent.js +6 -0
- package/lib/commonjs/types/AdEvent.js.map +1 -0
- package/lib/commonjs/types/AdInfo.js +6 -0
- package/lib/commonjs/types/AdInfo.js.map +1 -0
- package/lib/commonjs/types/AdProps.js +6 -0
- package/lib/commonjs/types/AdProps.js.map +1 -0
- package/lib/commonjs/types/AppOpenAd.js +6 -0
- package/lib/commonjs/types/AppOpenAd.js.map +1 -0
- package/lib/commonjs/types/DaroMMobileAds.js +2 -0
- package/lib/commonjs/types/DaroMMobileAds.js.map +1 -0
- package/lib/commonjs/types/FullScreenAd.js +6 -0
- package/lib/commonjs/types/FullScreenAd.js.map +1 -0
- package/lib/commonjs/types/InterstitialAd.js +6 -0
- package/lib/commonjs/types/InterstitialAd.js.map +1 -0
- package/lib/commonjs/types/LightPopupAd.js +6 -0
- package/lib/commonjs/types/LightPopupAd.js.map +1 -0
- package/lib/commonjs/types/NativeAdViewProps.js +6 -0
- package/lib/commonjs/types/NativeAdViewProps.js.map +1 -0
- package/lib/commonjs/types/RewardedAd.js +6 -0
- package/lib/commonjs/types/RewardedAd.js.map +1 -0
- package/lib/commonjs/types/index.js +61 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/module/AdBannerView.js +111 -0
- package/lib/module/AdBannerView.js.map +1 -0
- package/lib/module/AppOpenAd.js +88 -0
- package/lib/module/AppOpenAd.js.map +1 -0
- package/lib/module/ErrorCode.js +7 -0
- package/lib/module/ErrorCode.js.map +1 -0
- package/lib/module/EventEmitter.js +24 -0
- package/lib/module/EventEmitter.js.map +1 -0
- package/lib/module/InterstitialAd.js +88 -0
- package/lib/module/InterstitialAd.js.map +1 -0
- package/lib/module/LightPopupAd.js +130 -0
- package/lib/module/LightPopupAd.js.map +1 -0
- package/lib/module/RewardedAd.js +101 -0
- package/lib/module/RewardedAd.js.map +1 -0
- package/lib/module/index.js +30 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/nativeAd/NativeAdView.js +99 -0
- package/lib/module/nativeAd/NativeAdView.js.map +1 -0
- package/lib/module/nativeAd/NativeAdViewComponents.js +179 -0
- package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -0
- package/lib/module/nativeAd/NativeAdViewProvider.js +23 -0
- package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -0
- package/lib/module/types/AdBannerViewProps.js +4 -0
- package/lib/module/types/AdBannerViewProps.js.map +1 -0
- package/lib/module/types/AdEvent.js +4 -0
- package/lib/module/types/AdEvent.js.map +1 -0
- package/lib/module/types/AdInfo.js +4 -0
- package/lib/module/types/AdInfo.js.map +1 -0
- package/lib/module/types/AdProps.js +4 -0
- package/lib/module/types/AdProps.js.map +1 -0
- package/lib/module/types/AppOpenAd.js +4 -0
- package/lib/module/types/AppOpenAd.js.map +1 -0
- package/lib/module/types/DaroMMobileAds.js +2 -0
- package/lib/module/types/DaroMMobileAds.js.map +1 -0
- package/lib/module/types/FullScreenAd.js +4 -0
- package/lib/module/types/FullScreenAd.js.map +1 -0
- package/lib/module/types/InterstitialAd.js +4 -0
- package/lib/module/types/InterstitialAd.js.map +1 -0
- package/lib/module/types/LightPopupAd.js +4 -0
- package/lib/module/types/LightPopupAd.js.map +1 -0
- package/lib/module/types/NativeAdViewProps.js +4 -0
- package/lib/module/types/NativeAdViewProps.js.map +1 -0
- package/lib/module/types/RewardedAd.js +4 -0
- package/lib/module/types/RewardedAd.js.map +1 -0
- package/lib/module/types/index.js +8 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/AdBannerView.d.ts +12 -0
- package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts +4 -0
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ErrorCode.d.ts +4 -0
- package/lib/typescript/commonjs/src/ErrorCode.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/EventEmitter.d.ts +4 -0
- package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts +4 -0
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts +4 -0
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/RewardedAd.d.ts +4 -0
- package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +11 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +6 -0
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts +7 -0
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +14 -0
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts +14 -0
- package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/AdEvent.d.ts +7 -0
- package/lib/typescript/commonjs/src/types/AdEvent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/AdInfo.d.ts +19 -0
- package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/AdProps.d.ts +11 -0
- package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts +3 -0
- package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts +6 -0
- package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts +21 -0
- package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts +3 -0
- package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts +18 -0
- package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +17 -0
- package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/RewardedAd.d.ts +9 -0
- package/lib/typescript/commonjs/src/types/RewardedAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/index.d.ts +6 -0
- package/lib/typescript/commonjs/src/types/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/AdBannerView.d.ts +12 -0
- package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -0
- package/lib/typescript/module/src/AppOpenAd.d.ts +4 -0
- package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -0
- package/lib/typescript/module/src/ErrorCode.d.ts +4 -0
- package/lib/typescript/module/src/ErrorCode.d.ts.map +1 -0
- package/lib/typescript/module/src/EventEmitter.d.ts +4 -0
- package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -0
- package/lib/typescript/module/src/InterstitialAd.d.ts +4 -0
- package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -0
- package/lib/typescript/module/src/LightPopupAd.d.ts +4 -0
- package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -0
- package/lib/typescript/module/src/RewardedAd.d.ts +4 -0
- package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +11 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +6 -0
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -0
- package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts +7 -0
- package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -0
- package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +14 -0
- package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/types/AdBannerViewProps.d.ts +14 -0
- package/lib/typescript/module/src/types/AdBannerViewProps.d.ts.map +1 -0
- package/lib/typescript/module/src/types/AdEvent.d.ts +7 -0
- package/lib/typescript/module/src/types/AdEvent.d.ts.map +1 -0
- package/lib/typescript/module/src/types/AdInfo.d.ts +19 -0
- package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -0
- package/lib/typescript/module/src/types/AdProps.d.ts +11 -0
- package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -0
- package/lib/typescript/module/src/types/AppOpenAd.d.ts +3 -0
- package/lib/typescript/module/src/types/AppOpenAd.d.ts.map +1 -0
- package/lib/typescript/module/src/types/DaroMMobileAds.d.ts +6 -0
- package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +1 -0
- package/lib/typescript/module/src/types/FullScreenAd.d.ts +21 -0
- package/lib/typescript/module/src/types/FullScreenAd.d.ts.map +1 -0
- package/lib/typescript/module/src/types/InterstitialAd.d.ts +3 -0
- package/lib/typescript/module/src/types/InterstitialAd.d.ts.map +1 -0
- package/lib/typescript/module/src/types/LightPopupAd.d.ts +18 -0
- package/lib/typescript/module/src/types/LightPopupAd.d.ts.map +1 -0
- package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +17 -0
- package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -0
- package/lib/typescript/module/src/types/RewardedAd.d.ts +9 -0
- package/lib/typescript/module/src/types/RewardedAd.d.ts.map +1 -0
- package/lib/typescript/module/src/types/index.d.ts +6 -0
- package/lib/typescript/module/src/types/index.d.ts.map +1 -0
- package/package.json +185 -0
- package/react-native-daro-m.podspec +44 -0
- package/src/AdBannerView.tsx +138 -0
- package/src/AppOpenAd.ts +113 -0
- package/src/ErrorCode.ts +4 -0
- package/src/EventEmitter.ts +25 -0
- package/src/InterstitialAd.ts +113 -0
- package/src/LightPopupAd.ts +161 -0
- package/src/RewardedAd.ts +130 -0
- package/src/index.tsx +37 -0
- package/src/nativeAd/NativeAdView.tsx +124 -0
- package/src/nativeAd/NativeAdViewComponents.tsx +239 -0
- package/src/nativeAd/NativeAdViewProvider.tsx +32 -0
- package/src/types/AdBannerViewProps.ts +15 -0
- package/src/types/AdEvent.ts +9 -0
- package/src/types/AdInfo.ts +37 -0
- package/src/types/AdProps.ts +18 -0
- package/src/types/AppOpenAd.ts +3 -0
- package/src/types/DaroMMobileAds.ts +8 -0
- package/src/types/FullScreenAd.ts +28 -0
- package/src/types/InterstitialAd.ts +3 -0
- package/src/types/LightPopupAd.ts +19 -0
- package/src/types/NativeAdViewProps.ts +18 -0
- package/src/types/RewardedAd.ts +15 -0
- package/src/types/index.ts +5 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
package com.darom.event
|
|
2
|
+
|
|
3
|
+
internal interface DaroMEvent{
|
|
4
|
+
val value: String
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
internal enum class InterstitialEvent: DaroMEvent {
|
|
8
|
+
ON_INTERSTITIAL_LOADED_EVENT,
|
|
9
|
+
ON_INTERSTITIAL_LOAD_FAILED_EVENT,
|
|
10
|
+
ON_INTERSTITIAL_CLICKED_EVENT,
|
|
11
|
+
ON_INTERSTITIAL_DISPLAYED_EVENT,
|
|
12
|
+
ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
|
|
13
|
+
ON_INTERSTITIAL_HIDDEN_EVENT,
|
|
14
|
+
ON_INTERSTITIAL_AD_IMPRESSION_RECORDED;
|
|
15
|
+
|
|
16
|
+
override val value: String
|
|
17
|
+
get() = name
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
internal enum class RewardedEvent : DaroMEvent {
|
|
21
|
+
ON_REWARDED_AD_LOADED_EVENT,
|
|
22
|
+
ON_REWARDED_AD_LOAD_FAILED_EVENT,
|
|
23
|
+
ON_REWARDED_AD_CLICKED_EVENT,
|
|
24
|
+
ON_REWARDED_AD_DISPLAYED_EVENT,
|
|
25
|
+
ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
|
|
26
|
+
ON_REWARDED_AD_HIDDEN_EVENT,
|
|
27
|
+
ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
|
|
28
|
+
ON_REWARDED_AD_IMPRESSION_RECORDED;
|
|
29
|
+
|
|
30
|
+
override val value: String
|
|
31
|
+
get() = name
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
internal enum class LightPopupEvent : DaroMEvent {
|
|
35
|
+
ON_LIGHTPOPUP_LOADED_EVENT,
|
|
36
|
+
ON_LIGHTPOPUP_LOAD_FAILED_EVENT,
|
|
37
|
+
ON_LIGHTPOPUP_CLICKED_EVENT,
|
|
38
|
+
ON_LIGHTPOPUP_DISPLAYED_EVENT,
|
|
39
|
+
ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT,
|
|
40
|
+
ON_LIGHTPOPUP_HIDDEN_EVENT,
|
|
41
|
+
ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED;
|
|
42
|
+
|
|
43
|
+
override val value: String
|
|
44
|
+
get() = name
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
internal enum class AdViewEvent(
|
|
48
|
+
val key: String
|
|
49
|
+
): DaroMEvent {
|
|
50
|
+
ON_AD_CLICKED("onAdClickedEvent"),
|
|
51
|
+
ON_AD_FAILED_TO_LOAD("onAdLoadFailedEvent"),
|
|
52
|
+
ON_AD_IMPRESSION("onAdImpressionRecordedEvent"),
|
|
53
|
+
ON_AD_LOADED("onAdLoadedEvent");
|
|
54
|
+
|
|
55
|
+
override val value: String
|
|
56
|
+
get() = name
|
|
57
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
package com.darom.impl
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import com.darom.DaroMModule
|
|
5
|
+
import com.darom.event.InterstitialEvent
|
|
6
|
+
import com.darom.util.AdInfoUtil
|
|
7
|
+
import com.facebook.react.bridge.Promise
|
|
8
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
9
|
+
import droom.daro.core.adunit.DaroInterstitialAdUnit
|
|
10
|
+
import droom.daro.core.listener.DaroInterstitialAdListener
|
|
11
|
+
import droom.daro.core.listener.DaroInterstitialAdLoaderListener
|
|
12
|
+
import droom.daro.core.model.DaroAdDisplayFailError
|
|
13
|
+
import droom.daro.core.model.DaroAdInfo
|
|
14
|
+
import droom.daro.core.model.DaroAdLoadError
|
|
15
|
+
import droom.daro.core.model.DaroInterstitialAd
|
|
16
|
+
import droom.daro.loader.DaroInterstitialAdLoader
|
|
17
|
+
|
|
18
|
+
internal class DaroMInterstitialModuleImpl(
|
|
19
|
+
context: ReactApplicationContext,
|
|
20
|
+
private val getCurrentActivity: () -> Activity?,
|
|
21
|
+
) : DaroMModule.DaroMInterstitialModule(context) {
|
|
22
|
+
|
|
23
|
+
private val currentActivity: Activity?
|
|
24
|
+
get() = getCurrentActivity()
|
|
25
|
+
|
|
26
|
+
private val loaderMap: MutableMap<String, DaroInterstitialAdLoader> = mutableMapOf()
|
|
27
|
+
private val interstitialAdMap: MutableMap<String, DaroInterstitialAd> = mutableMapOf()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
override fun isInterstitialReady(adUnitId: String, promise: Promise) {
|
|
31
|
+
promise.resolve(retrieveAd(adUnitId) != null)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override fun loadInterstitial(adUnitId: String) {
|
|
35
|
+
retrieveLoader(adUnitId).load()
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
override fun showInterstitial(adUnitId: String) {
|
|
39
|
+
currentActivity?.let {
|
|
40
|
+
retrieveAd(adUnitId)?.apply {
|
|
41
|
+
setListener(object : DaroInterstitialAdListener {
|
|
42
|
+
override fun onDismiss(ad: DaroAdInfo) {
|
|
43
|
+
sendNativeEvent(
|
|
44
|
+
event = InterstitialEvent.ON_INTERSTITIAL_HIDDEN_EVENT,
|
|
45
|
+
params = AdInfoUtil.getAdInfo(adUnitId, ad),
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override fun onFailedToShow(ad: DaroAdInfo, error: DaroAdDisplayFailError) {
|
|
50
|
+
sendNativeEvent(
|
|
51
|
+
event = InterstitialEvent.ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
|
|
52
|
+
params = AdInfoUtil.getAdDisplayFailedInfo(adUnitId, ad, error),
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
override fun onShown(ad: DaroAdInfo) {
|
|
57
|
+
sendNativeEvent(
|
|
58
|
+
event = InterstitialEvent.ON_INTERSTITIAL_DISPLAYED_EVENT,
|
|
59
|
+
params = AdInfoUtil.getAdInfo(adUnitId, ad),
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
interstitialAdMap.remove(adUnitId)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
override fun onAdClicked(responseInfo: DaroAdInfo) {
|
|
66
|
+
sendNativeEvent(
|
|
67
|
+
event = InterstitialEvent.ON_INTERSTITIAL_CLICKED_EVENT,
|
|
68
|
+
params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
override fun onAdImpression(responseInfo: DaroAdInfo) {
|
|
73
|
+
sendNativeEvent(
|
|
74
|
+
event = InterstitialEvent.ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
|
|
75
|
+
params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
show(it)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private fun retrieveLoader(adUnitId: String): DaroInterstitialAdLoader {
|
|
86
|
+
return loaderMap[adUnitId] ?: DaroInterstitialAdLoader(
|
|
87
|
+
context,
|
|
88
|
+
DaroInterstitialAdUnit(adUnitId, adUnitId)
|
|
89
|
+
).also {
|
|
90
|
+
loaderMap[adUnitId] = it
|
|
91
|
+
it.setListener(object : DaroInterstitialAdLoaderListener {
|
|
92
|
+
override fun onAdLoadSuccess(ad: DaroInterstitialAd, responseInfo: DaroAdInfo) {
|
|
93
|
+
interstitialAdMap[adUnitId] = ad
|
|
94
|
+
sendNativeEvent(
|
|
95
|
+
event = InterstitialEvent.ON_INTERSTITIAL_LOADED_EVENT,
|
|
96
|
+
params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
override fun onAdLoadFail(err: DaroAdLoadError) {
|
|
101
|
+
sendNativeEvent(
|
|
102
|
+
event = InterstitialEvent.ON_INTERSTITIAL_LOAD_FAILED_EVENT,
|
|
103
|
+
params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
private fun retrieveAd(adUnitId: String): DaroInterstitialAd? {
|
|
111
|
+
return interstitialAdMap[adUnitId]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
package com.darom.impl
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import androidx.core.graphics.toColorInt
|
|
5
|
+
import com.darom.DaroMModule
|
|
6
|
+
import com.darom.event.LightPopupEvent
|
|
7
|
+
import com.darom.util.AdInfoUtil
|
|
8
|
+
import com.facebook.react.bridge.Promise
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
10
|
+
import com.facebook.react.bridge.ReadableMap
|
|
11
|
+
import droom.daro.core.adunit.DaroLightPopupAdUnit
|
|
12
|
+
import droom.daro.core.listener.DaroLightPopupAdListener
|
|
13
|
+
import droom.daro.core.listener.DaroLightPopupAdLoaderListener
|
|
14
|
+
import droom.daro.core.model.DaroAdDisplayFailError
|
|
15
|
+
import droom.daro.core.model.DaroAdInfo
|
|
16
|
+
import droom.daro.core.model.DaroAdLoadError
|
|
17
|
+
import droom.daro.core.model.DaroLightPopupAd
|
|
18
|
+
import droom.daro.core.model.DaroLightPopupAdOptions
|
|
19
|
+
import droom.daro.loader.DaroLightPopupAdLoader
|
|
20
|
+
|
|
21
|
+
internal class DaroMLightPopupModuleImpl(
|
|
22
|
+
context: ReactApplicationContext,
|
|
23
|
+
private val getCurrentActivity: () -> Activity?,
|
|
24
|
+
) : DaroMModule.DaroMLightPopupModule(context) {
|
|
25
|
+
|
|
26
|
+
private val currentActivity: Activity?
|
|
27
|
+
get() = getCurrentActivity()
|
|
28
|
+
|
|
29
|
+
private val lightpopupAdMap: MutableMap<String, DaroLightPopupAd> = mutableMapOf()
|
|
30
|
+
private val optionMap: MutableMap<String, DaroLightPopupAdOptions> = mutableMapOf()
|
|
31
|
+
private val loaderMap: MutableMap<String, DaroLightPopupAdLoader> = mutableMapOf()
|
|
32
|
+
|
|
33
|
+
override fun isLightPopupReady(adUnitId: String, promise: Promise) {
|
|
34
|
+
promise.resolve(retrieveAd(adUnitId) != null)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun loadLightPopup(adUnitId: String) {
|
|
38
|
+
context.runOnUiQueueThread {
|
|
39
|
+
retrieveLoader(adUnitId).load()
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
override fun setLightPopupAdConfiguration(
|
|
44
|
+
adUnitId: String,
|
|
45
|
+
parameterMap: ReadableMap,
|
|
46
|
+
) {
|
|
47
|
+
val newOption = DaroLightPopupAdOptions().let {
|
|
48
|
+
it.copy(
|
|
49
|
+
backgroundColor = parameterMap.getString("backgroundColor")?.toColorInt()
|
|
50
|
+
?: it.backgroundColor,
|
|
51
|
+
containerColor = parameterMap.getString("cardViewBackgroundColor")?.toColorInt()
|
|
52
|
+
?: it.containerColor,
|
|
53
|
+
adMarkLabelTextColor = parameterMap.getString("adMarkLabelTextColor")?.toColorInt()
|
|
54
|
+
?: it.adMarkLabelTextColor,
|
|
55
|
+
adMarkLabelBackgroundColor = parameterMap.getString("adMarkLabelBackgroundColor")
|
|
56
|
+
?.toColorInt() ?: it.adMarkLabelBackgroundColor,
|
|
57
|
+
titleColor = parameterMap.getString("titleTextColor")?.toColorInt() ?: it.titleColor,
|
|
58
|
+
bodyColor = parameterMap.getString("bodyTextColor")?.toColorInt() ?: it.bodyColor,
|
|
59
|
+
ctaBackgroundColor = parameterMap.getString("ctaButtonBackgroundColor")?.toColorInt()
|
|
60
|
+
?: it.ctaBackgroundColor,
|
|
61
|
+
ctaTextColor = parameterMap.getString("ctaButtonTextColor")?.toColorInt()
|
|
62
|
+
?: it.ctaTextColor,
|
|
63
|
+
closeButtonText = parameterMap.getString("closeButtonText") ?: it.closeButtonText,
|
|
64
|
+
closeButtonColor = parameterMap.getString("closeButtonTextColor")?.toColorInt()
|
|
65
|
+
?: it.closeButtonColor,
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
optionMap[adUnitId] = newOption
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
override fun showLightPopup(adUnitId: String) {
|
|
73
|
+
currentActivity?.let {
|
|
74
|
+
it.runOnUiThread {
|
|
75
|
+
retrieveAd(adUnitId)?.apply {
|
|
76
|
+
setListener(object : DaroLightPopupAdListener {
|
|
77
|
+
override fun onDismiss(ad: DaroAdInfo) {
|
|
78
|
+
sendNativeEvent(
|
|
79
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_HIDDEN_EVENT,
|
|
80
|
+
params = AdInfoUtil.getAdInfo(adUnitId, ad),
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
override fun onFailedToShow(ad: DaroAdInfo, error: DaroAdDisplayFailError) {
|
|
85
|
+
sendNativeEvent(
|
|
86
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT,
|
|
87
|
+
params = AdInfoUtil.getAdDisplayFailedInfo(adUnitId, ad, error),
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
override fun onShown(ad: DaroAdInfo) {
|
|
92
|
+
sendNativeEvent(
|
|
93
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_DISPLAYED_EVENT,
|
|
94
|
+
params = AdInfoUtil.getAdInfo(adUnitId, ad),
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
lightpopupAdMap.remove(adUnitId)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
override fun onAdClicked(responseInfo: DaroAdInfo) {
|
|
101
|
+
sendNativeEvent(
|
|
102
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_CLICKED_EVENT,
|
|
103
|
+
params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
override fun onAdImpression(responseInfo: DaroAdInfo) {
|
|
108
|
+
sendNativeEvent(
|
|
109
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED,
|
|
110
|
+
params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
show(it)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
private fun retrieveLoader(adUnitId: String): DaroLightPopupAdLoader {
|
|
122
|
+
return loaderMap[adUnitId] ?: DaroLightPopupAdLoader(
|
|
123
|
+
context,
|
|
124
|
+
DaroLightPopupAdUnit(adUnitId, adUnitId, optionMap[adUnitId] ?: DaroLightPopupAdOptions())
|
|
125
|
+
).also {
|
|
126
|
+
loaderMap[adUnitId] = it
|
|
127
|
+
it.setListener(object : DaroLightPopupAdLoaderListener {
|
|
128
|
+
override fun onAdLoadSuccess(ad: DaroLightPopupAd, responseInfo: DaroAdInfo) {
|
|
129
|
+
lightpopupAdMap[adUnitId] = ad
|
|
130
|
+
sendNativeEvent(
|
|
131
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_LOADED_EVENT,
|
|
132
|
+
params = AdInfoUtil.getAdInfo(adUnitId, responseInfo),
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
override fun onAdLoadFail(err: DaroAdLoadError) {
|
|
137
|
+
sendNativeEvent(
|
|
138
|
+
event = LightPopupEvent.ON_LIGHTPOPUP_LOAD_FAILED_EVENT,
|
|
139
|
+
params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
})
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private fun retrieveAd(adUnitId: String): DaroLightPopupAd? {
|
|
147
|
+
return lightpopupAdMap[adUnitId]
|
|
148
|
+
}
|
|
149
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
package com.darom.impl
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import com.darom.DaroMModule
|
|
5
|
+
import com.darom.event.RewardedEvent
|
|
6
|
+
import com.darom.util.AdInfoUtil
|
|
7
|
+
import com.facebook.react.bridge.Promise
|
|
8
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
9
|
+
import droom.daro.core.adunit.DaroRewardedAdUnit
|
|
10
|
+
import droom.daro.core.listener.DaroRewardedAdListener
|
|
11
|
+
import droom.daro.core.listener.DaroRewardedAdLoaderListener
|
|
12
|
+
import droom.daro.core.model.DaroAdDisplayFailError
|
|
13
|
+
import droom.daro.core.model.DaroAdInfo
|
|
14
|
+
import droom.daro.core.model.DaroAdLoadError
|
|
15
|
+
import droom.daro.core.model.DaroRewardedAd
|
|
16
|
+
import droom.daro.loader.DaroRewardedAdLoader
|
|
17
|
+
|
|
18
|
+
internal class DaroMRewardedAdModuleImpl(
|
|
19
|
+
context: ReactApplicationContext,
|
|
20
|
+
private val getCurrentActivity: () -> Activity?,
|
|
21
|
+
) : DaroMModule.DaroMRewardedModule(context) {
|
|
22
|
+
|
|
23
|
+
private val currentActivity: Activity?
|
|
24
|
+
get() = getCurrentActivity()
|
|
25
|
+
|
|
26
|
+
private val rewardedAdMap: MutableMap<String, DaroRewardedAd> = mutableMapOf()
|
|
27
|
+
private val loaderMap: MutableMap<String, DaroRewardedAdLoader> = mutableMapOf()
|
|
28
|
+
|
|
29
|
+
override fun isRewardedAdReady(adUnitId: String, promise: Promise) {
|
|
30
|
+
promise.resolve(retrieveAd(adUnitId) != null)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override fun loadRewardedAd(adUnitId: String) {
|
|
34
|
+
retrieveLoader(adUnitId).load()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun showRewardedAd(adUnitId: String, customData: String?) {
|
|
38
|
+
currentActivity?.let { activity ->
|
|
39
|
+
retrieveAd(adUnitId)?.apply {
|
|
40
|
+
setListener(object : DaroRewardedAdListener {
|
|
41
|
+
override fun onAdImpression(adInfo: DaroAdInfo) {
|
|
42
|
+
super.onAdImpression(adInfo)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override fun onAdClicked(adInfo: DaroAdInfo) {
|
|
46
|
+
super.onAdClicked(adInfo)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override fun onDismiss(adInfo: DaroAdInfo) {
|
|
50
|
+
sendNativeEvent(
|
|
51
|
+
event = RewardedEvent.ON_REWARDED_AD_HIDDEN_EVENT,
|
|
52
|
+
params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
override fun onEarnedReward(
|
|
57
|
+
adInfo: DaroAdInfo,
|
|
58
|
+
rewardItem: DaroRewardedAd.DaroRewardedItem,
|
|
59
|
+
) {
|
|
60
|
+
sendNativeEvent(
|
|
61
|
+
event = RewardedEvent.ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
|
|
62
|
+
params = AdInfoUtil.getRewardInfo(adUnitId, rewardItem),
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
override fun onFailedToShow(
|
|
67
|
+
adInfo: DaroAdInfo,
|
|
68
|
+
error: DaroAdDisplayFailError,
|
|
69
|
+
) {
|
|
70
|
+
sendNativeEvent(
|
|
71
|
+
event = RewardedEvent.ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
|
|
72
|
+
params = AdInfoUtil.getAdDisplayFailedInfo(adUnitId, adInfo, error),
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
override fun onShown(adInfo: DaroAdInfo) {
|
|
77
|
+
sendNativeEvent(
|
|
78
|
+
event = RewardedEvent.ON_REWARDED_AD_DISPLAYED_EVENT,
|
|
79
|
+
params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
rewardedAdMap.remove(adUnitId)
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
customData?.let { it -> setCustomData(it) }
|
|
87
|
+
activity.runOnUiThread {
|
|
88
|
+
show(activity)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
private fun retrieveLoader(adUnitId: String): DaroRewardedAdLoader {
|
|
95
|
+
return loaderMap[adUnitId] ?: DaroRewardedAdLoader(
|
|
96
|
+
context,
|
|
97
|
+
DaroRewardedAdUnit(adUnitId, adUnitId)
|
|
98
|
+
).also {
|
|
99
|
+
loaderMap[adUnitId] = it
|
|
100
|
+
it.setListener(
|
|
101
|
+
object : DaroRewardedAdLoaderListener {
|
|
102
|
+
override fun onAdLoadFail(err: DaroAdLoadError) {
|
|
103
|
+
sendNativeEvent(
|
|
104
|
+
event = RewardedEvent.ON_REWARDED_AD_LOAD_FAILED_EVENT,
|
|
105
|
+
params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
override fun onAdLoadSuccess(
|
|
110
|
+
ad: DaroRewardedAd,
|
|
111
|
+
adInfo: DaroAdInfo,
|
|
112
|
+
) {
|
|
113
|
+
rewardedAdMap[adUnitId] = ad
|
|
114
|
+
|
|
115
|
+
sendNativeEvent(
|
|
116
|
+
event = RewardedEvent.ON_REWARDED_AD_LOADED_EVENT,
|
|
117
|
+
params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
|
|
118
|
+
)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private fun retrieveAd(adUnitId: String): DaroRewardedAd? {
|
|
126
|
+
return rewardedAdMap[adUnitId]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
package com.darom.util
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import droom.daro.core.model.DaroAdDisplayFailError
|
|
6
|
+
import droom.daro.core.model.DaroAdInfo
|
|
7
|
+
import droom.daro.core.model.DaroAdLoadError
|
|
8
|
+
import droom.daro.core.model.DaroRewardedAd
|
|
9
|
+
|
|
10
|
+
internal object AdInfoUtil {
|
|
11
|
+
fun getAdInfo(adUnitId: String, ad: DaroAdInfo): WritableMap {
|
|
12
|
+
val adInfo = Arguments.createMap()
|
|
13
|
+
adInfo.putString("adUnitId", adUnitId)
|
|
14
|
+
adInfo.putInt("latencyMillis", ad.latency)
|
|
15
|
+
|
|
16
|
+
return adInfo
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
fun getAdLoadFailedInfo(adUnitId: String?, error: DaroAdLoadError?): WritableMap {
|
|
20
|
+
val errInfo = Arguments.createMap()
|
|
21
|
+
errInfo.putString("adUnitId", adUnitId)
|
|
22
|
+
|
|
23
|
+
if (error != null) {
|
|
24
|
+
errInfo.putInt("code", error.code)
|
|
25
|
+
errInfo.putString("message", error.message)
|
|
26
|
+
errInfo.putInt("latencyMillis", error.latency)
|
|
27
|
+
} else {
|
|
28
|
+
errInfo.putInt("code", -1)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return errInfo
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
fun getAdDisplayFailedInfo(adUnitId: String, ad: DaroAdInfo, error: DaroAdDisplayFailError): WritableMap {
|
|
35
|
+
val info = getAdInfo(adUnitId, ad)
|
|
36
|
+
|
|
37
|
+
info.putString("message", error.message)
|
|
38
|
+
|
|
39
|
+
return info
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
fun getRewardInfo(adUnitId: String, reward: DaroRewardedAd.DaroRewardedItem): WritableMap {
|
|
43
|
+
val adInfo = Arguments.createMap()
|
|
44
|
+
|
|
45
|
+
adInfo.putString("adUnitId", adUnitId)
|
|
46
|
+
adInfo.putString("rewardLabel", reward.type)
|
|
47
|
+
adInfo.putInt("rewardAmount", reward.amount)
|
|
48
|
+
|
|
49
|
+
return adInfo
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
package com.darom.util
|
|
2
|
+
|
|
3
|
+
import android.view.View
|
|
4
|
+
import com.darom.event.DaroMEvent
|
|
5
|
+
import com.facebook.react.bridge.ReactContext
|
|
6
|
+
import com.facebook.react.bridge.WritableMap
|
|
7
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
8
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
9
|
+
|
|
10
|
+
internal object EventEmitterUtil {
|
|
11
|
+
// React Native Bridge
|
|
12
|
+
fun sendReactNativeEvent(reactContext: ReactContext, event: DaroMEvent, params: WritableMap?) {
|
|
13
|
+
reactContext
|
|
14
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
15
|
+
.emit(event.value, params)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
fun View.sendNativeViewEvent(reactContext: ReactContext, event: DaroMEvent, params: WritableMap?) {
|
|
19
|
+
reactContext
|
|
20
|
+
.getJSModule(RCTEventEmitter::class.java)
|
|
21
|
+
.receiveEvent(id, event.value, params)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
package com.darom.view
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint
|
|
4
|
+
import androidx.core.view.children
|
|
5
|
+
import com.darom.event.AdViewEvent
|
|
6
|
+
import com.darom.util.AdInfoUtil
|
|
7
|
+
import com.darom.util.EventEmitterUtil.sendNativeViewEvent
|
|
8
|
+
import com.facebook.react.bridge.ReactContext
|
|
9
|
+
import com.facebook.react.views.view.ReactViewGroup
|
|
10
|
+
import droom.daro.core.adunit.DaroBannerAdUnit
|
|
11
|
+
import droom.daro.core.model.DaroAdInfo
|
|
12
|
+
import droom.daro.core.model.DaroAdLoadError
|
|
13
|
+
import droom.daro.core.model.DaroBannerSize
|
|
14
|
+
import droom.daro.core.model.DaroViewAd
|
|
15
|
+
import droom.daro.view.DaroAdViewListener
|
|
16
|
+
import droom.daro.view.DaroBannerAdView
|
|
17
|
+
|
|
18
|
+
@SuppressLint("ViewConstructor")
|
|
19
|
+
class DaroMAdBannerViewContainer(val context: ReactContext) : ReactViewGroup(context),
|
|
20
|
+
DaroAdViewListener {
|
|
21
|
+
|
|
22
|
+
private var adView: DaroBannerAdView? = null
|
|
23
|
+
|
|
24
|
+
internal var adUnitId: String = ""
|
|
25
|
+
|
|
26
|
+
internal var adSize: DaroBannerSize? = null
|
|
27
|
+
|
|
28
|
+
internal var loadOnMount: Boolean = true
|
|
29
|
+
|
|
30
|
+
fun loadAd() {
|
|
31
|
+
(adView ?: buildAdView())?.apply {
|
|
32
|
+
adView = this
|
|
33
|
+
|
|
34
|
+
if (this.parent == null) {
|
|
35
|
+
this@DaroMAdBannerViewContainer.addView(this)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
loadAd()
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private fun buildAdView(): DaroBannerAdView? {
|
|
43
|
+
if (adUnitId.isEmpty() || adSize == null) {
|
|
44
|
+
return null
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return DaroBannerAdView(
|
|
48
|
+
context,
|
|
49
|
+
DaroBannerAdUnit(
|
|
50
|
+
key = adUnitId,
|
|
51
|
+
placement = adUnitId,
|
|
52
|
+
bannerSize = adSize!!,
|
|
53
|
+
)
|
|
54
|
+
).also { view ->
|
|
55
|
+
view.setListener(this)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
fun destroy() {
|
|
60
|
+
adView?.destroy()
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
override fun onAdClicked(adInfo: DaroAdInfo) {
|
|
64
|
+
sendNativeViewEvent(
|
|
65
|
+
reactContext = context,
|
|
66
|
+
event = AdViewEvent.ON_AD_CLICKED,
|
|
67
|
+
params = AdInfoUtil.getAdInfo(adUnitId, adInfo)
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
override fun onAdImpression(adInfo: DaroAdInfo) {
|
|
72
|
+
sendNativeViewEvent(
|
|
73
|
+
reactContext = context,
|
|
74
|
+
event = AdViewEvent.ON_AD_IMPRESSION,
|
|
75
|
+
params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
override fun onAdLoadFail(err: DaroAdLoadError) {
|
|
80
|
+
sendNativeViewEvent(
|
|
81
|
+
reactContext = context,
|
|
82
|
+
event = AdViewEvent.ON_AD_FAILED_TO_LOAD,
|
|
83
|
+
params = AdInfoUtil.getAdLoadFailedInfo(adUnitId, err),
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
override fun onAdLoadSuccess(
|
|
88
|
+
ad: DaroViewAd,
|
|
89
|
+
adInfo: DaroAdInfo,
|
|
90
|
+
) {
|
|
91
|
+
sendNativeViewEvent(
|
|
92
|
+
reactContext = context,
|
|
93
|
+
event = AdViewEvent.ON_AD_LOADED,
|
|
94
|
+
params = AdInfoUtil.getAdInfo(adUnitId, adInfo),
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
adView?.children?.first()?.let {
|
|
98
|
+
it.measure(
|
|
99
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
100
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
it.layout(0, 0, width, height)
|
|
104
|
+
it.requestLayout()
|
|
105
|
+
adView!!.requestLayout()
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
override fun requestLayout() {
|
|
110
|
+
super.requestLayout()
|
|
111
|
+
|
|
112
|
+
// https://stackoverflow.com/a/39838774/5477988
|
|
113
|
+
// This is required to ensure ad refreshes render correctly in RN Android due to known issue
|
|
114
|
+
// where `getWidth()` and `getHeight()` return 0 on attach
|
|
115
|
+
try {
|
|
116
|
+
adView?.measure(
|
|
117
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
118
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
adView?.layout(0, 0, width, height)
|
|
122
|
+
} catch (_: Exception) {
|
|
123
|
+
// Ignore
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
fun onSetProps() {
|
|
128
|
+
if (loadOnMount) {
|
|
129
|
+
loadAd()
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|