react-native-daro 1.0.15 → 2.0.0-rc.1
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/README.md +2 -5
- package/android/build.gradle +17 -14
- package/android/src/main/java/com/daro/reactnative/DaroMediaViewManager.kt +25 -0
- package/android/src/main/java/com/daro/reactnative/DaroRNAdBannerViewManager.kt +105 -0
- package/android/src/main/java/com/daro/reactnative/DaroRNAdNativeViewManager.kt +163 -0
- package/android/src/main/java/com/daro/reactnative/DaroRNModule.kt +376 -0
- package/android/src/main/java/com/daro/reactnative/DaroRNPackage.kt +45 -0
- package/android/src/main/java/com/daro/reactnative/DaroSdkBridge.kt +52 -0
- package/android/src/main/java/com/daro/reactnative/constants/{InternalDaroMBannerSize.kt → InternalDaroRNBannerSize.kt} +2 -2
- package/android/src/main/java/com/daro/reactnative/event/{DaroMEvent.kt → DaroRNEvent.kt} +22 -11
- package/android/src/main/java/com/daro/reactnative/impl/{DaroMBannerViewModuleImpl.kt → DaroRNBannerViewModuleImpl.kt} +3 -3
- package/android/src/main/java/com/daro/reactnative/impl/{DaroMInterstitialModuleImpl.kt → DaroRNInterstitialModuleImpl.kt} +4 -4
- package/android/src/main/java/com/daro/reactnative/impl/{DaroMLightPopupModuleImpl.kt → DaroRNLightPopupModuleImpl.kt} +4 -4
- package/android/src/main/java/com/daro/reactnative/impl/{DaroMRewardedAdModuleImpl.kt → DaroRNRewardedAdModuleImpl.kt} +4 -4
- package/android/src/main/java/com/daro/reactnative/util/AdInfoUtil.kt +12 -0
- package/android/src/main/java/com/daro/reactnative/util/DaroQaProbe.kt +147 -0
- package/android/src/main/java/com/daro/reactnative/util/EventEmitterUtil.kt +20 -7
- package/android/src/main/java/com/daro/reactnative/view/DaroMediaView.kt +123 -0
- package/android/src/main/java/com/daro/reactnative/view/{DaroMAdBannerViewContainer.kt → DaroRNAdBannerViewContainer.kt} +2 -3
- package/android/src/main/java/com/daro/reactnative/view/DaroRNAdNativeViewContainer.kt +623 -0
- package/android/src/newarch/java/com/daro/reactnative/DaroRNModuleSpec.kt +6 -0
- package/android/src/oldarch/java/com/daro/reactnative/DaroRNModuleSpec.kt +119 -0
- package/ios/{DaroMModule+AppOpen.swift → DaroRNModule+AppOpen.swift} +22 -20
- package/ios/DaroRNModule+Consent.swift +88 -0
- package/ios/{DaroMModule+Interstitial.swift → DaroRNModule+Interstitial.swift} +21 -18
- package/ios/{DaroMModule+LightPopup.swift → DaroRNModule+LightPopup.swift} +18 -15
- package/ios/DaroRNModule+Qa.swift +158 -0
- package/ios/{DaroMModule+Rewarded.swift → DaroRNModule+Rewarded.swift} +22 -19
- package/ios/DaroRNModule.mm +88 -0
- package/ios/{DaroMModule.swift → DaroRNModule.swift} +24 -10
- package/ios/Fabric/DaroRNAdBannerComponentView.mm +219 -0
- package/ios/Fabric/DaroRNFabricEventSink.mm +31 -0
- package/ios/Fabric/DaroRNFabricPropApplier.mm +123 -0
- package/ios/Fabric/DaroRNNativeAdComponentView.mm +306 -0
- package/ios/{DaroMAdBannerViewManager.m → Paper/DaroRNAdBannerViewManager.m} +4 -2
- package/ios/Paper/DaroRNAdBannerViewManager.swift +21 -0
- package/ios/{DaroMNativeAdViewManager.m → Paper/DaroRNNativeAdViewManager.m} +3 -2
- package/ios/Paper/DaroRNNativeAdViewManager.swift +22 -0
- package/ios/Shared/DaroMediationDebugger.swift +14 -0
- package/ios/{mediation/admob → Shared}/DaroMediationTypes.swift +1 -0
- package/ios/Shared/DaroRNAdEventSink.swift +24 -0
- package/ios/Shared/DaroRNBannerAdView.swift +188 -0
- package/ios/Shared/DaroRNNativeAdLoadCoordinator.swift +49 -0
- package/ios/Shared/DaroRNNativeAdView.swift +575 -0
- package/ios/Shared/DaroRNNativeAssetResolver.swift +53 -0
- package/lib/commonjs/AdBannerView.js +20 -41
- package/lib/commonjs/AdBannerView.js.map +1 -1
- package/lib/commonjs/AppOpenAd.js +45 -12
- package/lib/commonjs/AppOpenAd.js.map +1 -1
- package/lib/commonjs/DaroMediaViewNativeComponent.ts +9 -0
- package/lib/commonjs/DaroRNAdBannerViewNativeComponent.ts +50 -0
- package/lib/commonjs/DaroRNNativeAdViewNativeComponent.ts +65 -0
- package/lib/commonjs/EventEmitter.js +4 -5
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/InterstitialAd.js +9 -11
- package/lib/commonjs/InterstitialAd.js.map +1 -1
- package/lib/commonjs/LightPopupAd.js +11 -12
- 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 +9 -11
- 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 +150 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdView.js +23 -22
- 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/module/AdBannerView.js +19 -42
- package/lib/module/AdBannerView.js.map +1 -1
- package/lib/module/AppOpenAd.js +45 -13
- package/lib/module/AppOpenAd.js.map +1 -1
- package/lib/module/DaroMediaViewNativeComponent.ts +9 -0
- package/lib/module/DaroRNAdBannerViewNativeComponent.ts +50 -0
- package/lib/module/DaroRNNativeAdViewNativeComponent.ts +65 -0
- package/lib/module/EventEmitter.js +4 -6
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/InterstitialAd.js +8 -11
- package/lib/module/InterstitialAd.js.map +1 -1
- package/lib/module/LightPopupAd.js +11 -13
- 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 +8 -11
- 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 +108 -13
- package/lib/module/index.js.map +1 -1
- package/lib/module/nativeAd/NativeAdView.js +22 -23
- 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/typescript/commonjs/plugin/src/index.d.ts +2 -6
- package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +2 -6
- package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -1
- package/lib/typescript/commonjs/plugin/src/withIos.d.ts +2 -6
- package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/AdBannerView.d.ts +2 -2
- package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts +2 -2
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
- 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/DaroRNAdBannerViewNativeComponent.d.ts +33 -0
- package/lib/typescript/commonjs/src/DaroRNAdBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/DaroRNNativeAdViewNativeComponent.d.ts +43 -0
- package/lib/typescript/commonjs/src/DaroRNNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/NativeDaroModule.d.ts +70 -0
- package/lib/typescript/commonjs/src/NativeDaroModule.d.ts.map +1 -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 +86 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +1 -0
- 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/AdInfo.d.ts +15 -0
- package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdProps.d.ts +0 -1
- package/lib/typescript/commonjs/src/types/AdProps.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 +2 -6
- package/lib/typescript/module/plugin/src/index.d.ts.map +1 -1
- package/lib/typescript/module/plugin/src/withAndroid.d.ts +2 -6
- package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -1
- package/lib/typescript/module/plugin/src/withIos.d.ts +2 -6
- package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -1
- package/lib/typescript/module/src/AdBannerView.d.ts +2 -2
- package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
- package/lib/typescript/module/src/AppOpenAd.d.ts +2 -2
- package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
- 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/DaroRNAdBannerViewNativeComponent.d.ts +33 -0
- package/lib/typescript/module/src/DaroRNAdBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/DaroRNNativeAdViewNativeComponent.d.ts +43 -0
- package/lib/typescript/module/src/DaroRNNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/module/src/NativeDaroModule.d.ts +70 -0
- package/lib/typescript/module/src/NativeDaroModule.d.ts.map +1 -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 +86 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +1 -0
- 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/AdInfo.d.ts +15 -0
- package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdProps.d.ts +0 -1
- package/lib/typescript/module/src/types/AdProps.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 +12 -5
- package/plugin/build/index.d.ts +2 -6
- package/plugin/build/index.js +21 -56
- package/plugin/build/withAndroid.d.ts +2 -6
- package/plugin/build/withAndroid.js +123 -83
- package/plugin/build/withIos.d.ts +2 -6
- package/plugin/build/withIos.js +37 -34
- package/react-native-daro.podspec +4 -2
- package/src/AdBannerView.tsx +24 -63
- package/src/AppOpenAd.ts +48 -17
- package/src/DaroMediaViewNativeComponent.ts +9 -0
- package/src/DaroRNAdBannerViewNativeComponent.ts +50 -0
- package/src/DaroRNNativeAdViewNativeComponent.ts +65 -0
- package/src/EventEmitter.ts +4 -5
- package/src/InterstitialAd.ts +8 -10
- package/src/LightPopupAd.ts +11 -12
- package/src/NativeDaroModule.ts +106 -0
- package/src/RewardedAd.ts +8 -10
- 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 +157 -22
- package/src/nativeAd/NativeAdView.tsx +41 -54
- package/src/nativeAd/NativeAdViewComponents.tsx +80 -42
- package/src/nativeAd/NativeAdViewProvider.tsx +75 -17
- package/src/types/AdInfo.ts +17 -0
- package/src/types/AdProps.ts +0 -2
- package/src/types/NativeAdViewProps.ts +7 -0
- package/android/src/admob/java/com/daro/reactnative/DaroSdkBridge.kt +0 -23
- package/android/src/main/java/com/daro/reactnative/DaroMAdBannerViewManager.kt +0 -132
- package/android/src/main/java/com/daro/reactnative/DaroMAdNativeViewManager.kt +0 -136
- package/android/src/main/java/com/daro/reactnative/DaroMModule.kt +0 -202
- package/android/src/main/java/com/daro/reactnative/DaroMPackage.kt +0 -21
- package/android/src/main/java/com/daro/reactnative/view/DaroMAdNativeViewContainer.kt +0 -375
- package/ios/DaroMAdBannerViewManager.swift +0 -91
- package/ios/DaroMModule.mm +0 -45
- package/ios/DaroMNativeAdViewManager.swift +0 -291
- package/ios/mediation/admob/DaroMediationDebugger.swift +0 -11
- package/lib/commonjs/types/DaroMMobileAds.js +0 -2
- package/lib/commonjs/types/DaroMMobileAds.js.map +0 -1
- package/lib/module/types/DaroMMobileAds.js +0 -2
- package/lib/module/types/DaroMMobileAds.js.map +0 -1
- package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts +0 -6
- package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +0 -1
- package/lib/typescript/module/src/types/DaroMMobileAds.d.ts +0 -6
- package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +0 -1
- package/src/types/DaroMMobileAds.ts +0 -5
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
package com.daro.reactnative
|
|
2
|
+
|
|
3
|
+
import android.app.Application
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import com.daro.reactnative.constants.InternalDaroRNBannerSize
|
|
6
|
+
import com.daro.reactnative.event.AppOpenEvent
|
|
7
|
+
import com.daro.reactnative.event.DaroRNEvent
|
|
8
|
+
import com.daro.reactnative.event.InterstitialEvent
|
|
9
|
+
import com.daro.reactnative.event.LightPopupEvent
|
|
10
|
+
import com.daro.reactnative.event.RewardedEvent
|
|
11
|
+
import com.daro.reactnative.impl.DaroRNBannerViewModuleImpl
|
|
12
|
+
import com.daro.reactnative.impl.DaroRNInterstitialModuleImpl
|
|
13
|
+
import com.daro.reactnative.impl.DaroRNLightPopupModuleImpl
|
|
14
|
+
import com.daro.reactnative.impl.DaroRNRewardedAdModuleImpl
|
|
15
|
+
import com.daro.reactnative.util.DaroQaProbe
|
|
16
|
+
import com.daro.reactnative.util.EventEmitterUtil
|
|
17
|
+
import com.facebook.react.bridge.Promise
|
|
18
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
19
|
+
import com.facebook.react.bridge.ReactContext
|
|
20
|
+
import com.facebook.react.bridge.ReactMethod
|
|
21
|
+
import com.facebook.react.bridge.ReadableMap
|
|
22
|
+
import com.facebook.react.bridge.WritableMap
|
|
23
|
+
import droom.daro.SDKConfig
|
|
24
|
+
import droom.daro.core.consent.CcpaStatus
|
|
25
|
+
import droom.daro.core.consent.CoppaStatus
|
|
26
|
+
import droom.daro.core.consent.GdprStatus
|
|
27
|
+
import droom.daro.core.model.DaroMediationType
|
|
28
|
+
import droom.daro.sdk.Daro
|
|
29
|
+
|
|
30
|
+
class DaroRNModule(reactContext: ReactApplicationContext) :
|
|
31
|
+
DaroRNModuleSpec(reactContext) {
|
|
32
|
+
|
|
33
|
+
companion object {
|
|
34
|
+
const val NAME = "DaroRNModule"
|
|
35
|
+
private const val APP_OPEN_UNSUPPORTED_CODE = "APP_OPEN_UNSUPPORTED"
|
|
36
|
+
private const val APP_OPEN_UNSUPPORTED_MESSAGE = "AppOpen ad is not supported on Android"
|
|
37
|
+
private const val INVALID_CONSENT_STATUS_CODE = "INVALID_CONSENT_STATUS"
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* JS 의 플랫폼 중립 문자열 → 안드로이드 enum.
|
|
41
|
+
*
|
|
42
|
+
* **JS 가 enum 이름을 알게 두지 않는다.** 그러면 그 이름이 브리지 계약이 되어 iOS 가
|
|
43
|
+
* `OPT_IN` 같은 안드로이드 표현을 되옮겨야 하고, 그 되옮김이 빠지면 조용히 틀린 값이
|
|
44
|
+
* 전달된다(DARO-1471). 옮기는 일은 각 플랫폼이 자기 쪽에서 한다.
|
|
45
|
+
*
|
|
46
|
+
* `enumValueOf` 로 대신하지 않는다 — 그러면 JS 문자열이 곧 Kotlin enum 이름이어야
|
|
47
|
+
* 하므로 방금 막은 결합이 이름 규약의 형태로 되살아난다.
|
|
48
|
+
*/
|
|
49
|
+
private val GDPR_STATUSES = mapOf(
|
|
50
|
+
"optIn" to GdprStatus.OPT_IN,
|
|
51
|
+
"optOut" to GdprStatus.OPT_OUT,
|
|
52
|
+
"notApplicable" to GdprStatus.NOT_APPLICABLE,
|
|
53
|
+
"unknown" to GdprStatus.UNKNOWN,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
private val CCPA_STATUSES = mapOf(
|
|
57
|
+
"optIn" to CcpaStatus.OPT_IN,
|
|
58
|
+
"optOut" to CcpaStatus.OPT_OUT,
|
|
59
|
+
"notApplicable" to CcpaStatus.NOT_APPLICABLE,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
private val COPPA_STATUSES = mapOf(
|
|
63
|
+
"child" to CoppaStatus.CHILD,
|
|
64
|
+
"notChild" to CoppaStatus.NOT_CHILD,
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private val context: Context = reactApplicationContext
|
|
69
|
+
|
|
70
|
+
@ReactMethod
|
|
71
|
+
override fun addListener(eventName: String) = Unit
|
|
72
|
+
|
|
73
|
+
@ReactMethod
|
|
74
|
+
override fun removeListeners(count: Double) = Unit
|
|
75
|
+
|
|
76
|
+
@ReactMethod
|
|
77
|
+
override fun initializeSdk(promise: Promise) {
|
|
78
|
+
DaroSdkBridge.initialize(
|
|
79
|
+
application = context.applicationContext as Application,
|
|
80
|
+
sdkConfig = SDKConfig.Builder()
|
|
81
|
+
.setDebugMode(false)
|
|
82
|
+
.build()
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
promise.resolve(null)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// 상태 출처는 프로세스 수명인 DaroSdkBridge 다 — 모듈 필드로 두면 JS 리로드마다
|
|
89
|
+
// false 로 돌아가 이미 선 SDK 를 "초기화 안 됨"으로 보고한다.
|
|
90
|
+
@ReactMethod
|
|
91
|
+
override fun isInitialized(promise: Promise) {
|
|
92
|
+
promise.resolve(DaroSdkBridge.isInitialized)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@ReactMethod
|
|
96
|
+
override fun showMediationDebugger(promise: Promise) {
|
|
97
|
+
DaroSdkBridge.openDebugger(context)
|
|
98
|
+
promise.resolve(null)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// 암묵 선택(마지막 로드 미디에이션)이 아니라 QA 가 고른 쪽을 명시적으로 연다.
|
|
102
|
+
// Ad Inspector 는 UI 를 붙일 Activity 컨텍스트가 필요하다 — 앱 컨텍스트를 주면
|
|
103
|
+
// 콜백 에러만 남기고 조용히 안 뜬다.
|
|
104
|
+
@ReactMethod
|
|
105
|
+
override fun showMediationDebuggerFor(mediation: String, promise: Promise) {
|
|
106
|
+
// 앱 컨텍스트로는 조용히 안 뜬다 — 그럴 바엔 거절해서 사유가 화면에 남게 한다.
|
|
107
|
+
val activity = getCurrentActivity()
|
|
108
|
+
?: return promise.reject("NO_ACTIVITY", "검사기를 띄울 Activity 가 없다 (앱이 백그라운드?)")
|
|
109
|
+
|
|
110
|
+
// **SDK 의 matching 을 쓴다** — 공개 어휘(daroa/darom)와 구 어휘(admob/applovin)를
|
|
111
|
+
// 둘 다 받고 대소문자도 가린다. 손으로 비교하면 모르는 값이 조용히 AdMob 으로
|
|
112
|
+
// 떨어져 **엉뚱한 검사기가 뜨고 아무도 모른다** — 어휘가 바뀐 지금 실제로 그랬다.
|
|
113
|
+
val type = DaroMediationType.matching(mediation)
|
|
114
|
+
?: return promise.reject("UNKNOWN_MEDIATION", "모르는 미디에이션이다: $mediation")
|
|
115
|
+
Daro.openDebugger(activity, type)
|
|
116
|
+
promise.resolve(null)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@ReactMethod
|
|
120
|
+
override fun getSdkVersion(promise: Promise) {
|
|
121
|
+
promise.resolve(Daro.SDK_VERSION)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@ReactMethod
|
|
125
|
+
override fun getMediationStatuses(promise: Promise) {
|
|
126
|
+
promise.resolve(DaroQaProbe.mediationStatuses())
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@ReactMethod
|
|
130
|
+
override fun getMediationWeights(promise: Promise) {
|
|
131
|
+
// Android 는 유효 가중치 읽기 표면이 없다 — DARO-1393/DARO-1425.
|
|
132
|
+
promise.resolve(null)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@ReactMethod
|
|
136
|
+
override fun getAdapterInventory(promise: Promise) {
|
|
137
|
+
promise.resolve(DaroQaProbe.adapterInventory(context))
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// 주입 결과 판독 — daro-plugin 이 병합 매니페스트에 심은 파생값을 그대로 돌려준다.
|
|
141
|
+
@ReactMethod
|
|
142
|
+
override fun getIntegrationKeyInfo(promise: Promise) {
|
|
143
|
+
val meta = runCatching {
|
|
144
|
+
context.packageManager
|
|
145
|
+
.getApplicationInfo(context.packageName, android.content.pm.PackageManager.GET_META_DATA)
|
|
146
|
+
.metaData
|
|
147
|
+
}.getOrNull()
|
|
148
|
+
|
|
149
|
+
val info = com.facebook.react.bridge.Arguments.createMap()
|
|
150
|
+
listOf(
|
|
151
|
+
"DARO_APP_KEY",
|
|
152
|
+
"com.google.android.gms.ads.APPLICATION_ID",
|
|
153
|
+
"APPLOVIN_KEY",
|
|
154
|
+
).forEach { name ->
|
|
155
|
+
info.putString(name, meta?.getString(name))
|
|
156
|
+
}
|
|
157
|
+
promise.resolve(info)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@ReactMethod
|
|
161
|
+
override fun setUserId(userId: String, promise: Promise) {
|
|
162
|
+
DaroSdkBridge.setUserId(context, userId)
|
|
163
|
+
promise.resolve(null)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// 모르는 상태는 **기본값으로 떨어뜨리지 않고 reject 한다.** 동의는 조용히 틀리면
|
|
167
|
+
// 안 되는 값이라, 오타가 "일단 옵트인"으로 흡수되는 쪽이 훨씬 나쁘다 — 호출자는
|
|
168
|
+
// 성공 응답을 받고 규제 대상 트래픽에 개인화 광고를 계속 태운다.
|
|
169
|
+
@ReactMethod
|
|
170
|
+
override fun setGdpr(status: String, consentString: String, promise: Promise) {
|
|
171
|
+
val parsed = GDPR_STATUSES[status]
|
|
172
|
+
?: return promise.reject(INVALID_CONSENT_STATUS_CODE, "Unknown GdprStatus: $status")
|
|
173
|
+
DaroSdkBridge.setGdpr(context, parsed, consentString)
|
|
174
|
+
promise.resolve(null)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@ReactMethod
|
|
178
|
+
override fun setCcpa(status: String, consentString: String, promise: Promise) {
|
|
179
|
+
val parsed = CCPA_STATUSES[status]
|
|
180
|
+
?: return promise.reject(INVALID_CONSENT_STATUS_CODE, "Unknown CcpaStatus: $status")
|
|
181
|
+
DaroSdkBridge.setCcpa(context, parsed, consentString)
|
|
182
|
+
promise.resolve(null)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@ReactMethod
|
|
186
|
+
override fun setCoppa(status: String, promise: Promise) {
|
|
187
|
+
val parsed = COPPA_STATUSES[status]
|
|
188
|
+
?: return promise.reject(INVALID_CONSENT_STATUS_CODE, "Unknown CoppaStatus: $status")
|
|
189
|
+
DaroSdkBridge.setCoppa(context, parsed)
|
|
190
|
+
promise.resolve(null)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
protected override fun getTypedExportedConstants(): MutableMap<String, Any> {
|
|
194
|
+
val constants = mutableMapOf<String, Any>()
|
|
195
|
+
constants.putAll(daroRNInterstitialModule.getComponents())
|
|
196
|
+
constants.putAll(daroRNRewardedModule.getComponents())
|
|
197
|
+
constants.putAll(daroRNLightPopupModule.getComponents())
|
|
198
|
+
constants.putAll(daroRNAppOpenModule.getComponents())
|
|
199
|
+
constants.putAll(daroRNBannerModule.getComponents())
|
|
200
|
+
|
|
201
|
+
return constants
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
internal abstract class DaroRNComponentModule(protected val context: ReactContext) {
|
|
205
|
+
abstract fun getComponents(): MutableMap<String, Any>
|
|
206
|
+
|
|
207
|
+
fun sendNativeEvent(event: DaroRNEvent, params: WritableMap?) {
|
|
208
|
+
EventEmitterUtil.sendReactNativeEvent(
|
|
209
|
+
reactContext = context,
|
|
210
|
+
event = event,
|
|
211
|
+
params = params,
|
|
212
|
+
)
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@OptIn(ExperimentalStdlibApi::class)
|
|
217
|
+
internal abstract class DaroRNInterstitialModule(context: ReactContext) :
|
|
218
|
+
DaroRNComponentModule(context) {
|
|
219
|
+
abstract fun isInterstitialReady(requestId: Int, adUnitId: String, promise: Promise)
|
|
220
|
+
abstract fun loadInterstitial(requestId: Int, adUnitId: String)
|
|
221
|
+
abstract fun showInterstitial(requestId: Int, adUnitId: String)
|
|
222
|
+
|
|
223
|
+
override fun getComponents(): MutableMap<String, Any> {
|
|
224
|
+
return InterstitialEvent.entries.associate { it.value to it.value }.toMutableMap()
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
private val daroRNInterstitialModule: DaroRNInterstitialModule =
|
|
229
|
+
DaroRNInterstitialModuleImpl(
|
|
230
|
+
context = reactContext,
|
|
231
|
+
getCurrentActivity = { reactApplicationContext.currentActivity }
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
@ReactMethod
|
|
235
|
+
override fun isInterstitialReady(requestId: Double, adUnitId: String, promise: Promise) {
|
|
236
|
+
daroRNInterstitialModule.isInterstitialReady(requestId.toInt(), adUnitId, promise)
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
@ReactMethod
|
|
240
|
+
override fun loadInterstitial(requestId: Double, adUnitId: String, promise: Promise) {
|
|
241
|
+
daroRNInterstitialModule.loadInterstitial(requestId.toInt(), adUnitId)
|
|
242
|
+
promise.resolve(null)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
@ReactMethod
|
|
246
|
+
override fun showInterstitial(requestId: Double, adUnitId: String, promise: Promise) {
|
|
247
|
+
daroRNInterstitialModule.showInterstitial(requestId.toInt(), adUnitId)
|
|
248
|
+
promise.resolve(null)
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
@OptIn(ExperimentalStdlibApi::class)
|
|
252
|
+
internal abstract class DaroRNRewardedModule(context: ReactContext) :
|
|
253
|
+
DaroRNComponentModule(context) {
|
|
254
|
+
abstract fun isRewardedAdReady(requestId: Int, adUnitId: String, promise: Promise)
|
|
255
|
+
abstract fun loadRewardedAd(requestId: Int, adUnitId: String)
|
|
256
|
+
abstract fun showRewardedAd(requestId: Int, adUnitId: String, customData: String?)
|
|
257
|
+
|
|
258
|
+
override fun getComponents(): MutableMap<String, Any> {
|
|
259
|
+
return RewardedEvent.entries.associate { it.value to it.value }.toMutableMap()
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
private val daroRNRewardedModule: DaroRNRewardedModule =
|
|
264
|
+
DaroRNRewardedAdModuleImpl(
|
|
265
|
+
context = reactContext,
|
|
266
|
+
getCurrentActivity = { reactApplicationContext.currentActivity }
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
@ReactMethod
|
|
270
|
+
override fun isRewardedAdReady(requestId: Double, adUnitId: String, promise: Promise) {
|
|
271
|
+
daroRNRewardedModule.isRewardedAdReady(requestId.toInt(), adUnitId, promise)
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
@ReactMethod
|
|
275
|
+
override fun loadRewardedAd(requestId: Double, adUnitId: String, promise: Promise) {
|
|
276
|
+
daroRNRewardedModule.loadRewardedAd(requestId.toInt(), adUnitId)
|
|
277
|
+
promise.resolve(null)
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
@ReactMethod
|
|
281
|
+
override fun showRewardedAd(
|
|
282
|
+
requestId: Double,
|
|
283
|
+
adUnitId: String,
|
|
284
|
+
customData: String?,
|
|
285
|
+
promise: Promise,
|
|
286
|
+
) {
|
|
287
|
+
daroRNRewardedModule.showRewardedAd(requestId.toInt(), adUnitId, customData)
|
|
288
|
+
promise.resolve(null)
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
@OptIn(ExperimentalStdlibApi::class)
|
|
292
|
+
internal abstract class DaroRNLightPopupModule(context: ReactContext) :
|
|
293
|
+
DaroRNComponentModule(context) {
|
|
294
|
+
abstract fun isLightPopupReady(requestId: Int, adUnitId: String, promise: Promise)
|
|
295
|
+
abstract fun loadLightPopup(requestId: Int, adUnitId: String)
|
|
296
|
+
abstract fun showLightPopup(requestId: Int, adUnitId: String)
|
|
297
|
+
|
|
298
|
+
abstract fun setLightPopupAdConfiguration(requestId: Int, adUnitId: String, parameterMap: ReadableMap)
|
|
299
|
+
|
|
300
|
+
override fun getComponents(): MutableMap<String, Any> {
|
|
301
|
+
return LightPopupEvent.entries.associate { it.value to it.value }.toMutableMap()
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
private val daroRNLightPopupModule: DaroRNLightPopupModule = DaroRNLightPopupModuleImpl(
|
|
306
|
+
context = reactContext,
|
|
307
|
+
getCurrentActivity = { reactApplicationContext.currentActivity }
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
@ReactMethod
|
|
311
|
+
override fun isLightPopupReady(requestId: Double, adUnitId: String, promise: Promise) {
|
|
312
|
+
daroRNLightPopupModule.isLightPopupReady(requestId.toInt(), adUnitId, promise)
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
@ReactMethod
|
|
316
|
+
override fun loadLightPopup(requestId: Double, adUnitId: String, promise: Promise) {
|
|
317
|
+
daroRNLightPopupModule.loadLightPopup(requestId.toInt(), adUnitId)
|
|
318
|
+
promise.resolve(null)
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
@ReactMethod
|
|
322
|
+
override fun showLightPopup(requestId: Double, adUnitId: String, promise: Promise) {
|
|
323
|
+
daroRNLightPopupModule.showLightPopup(requestId.toInt(), adUnitId)
|
|
324
|
+
promise.resolve(null)
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
@ReactMethod
|
|
328
|
+
override fun setLightPopupAdConfiguration(
|
|
329
|
+
requestId: Double,
|
|
330
|
+
adUnitId: String,
|
|
331
|
+
configuration: ReadableMap,
|
|
332
|
+
promise: Promise,
|
|
333
|
+
) {
|
|
334
|
+
daroRNLightPopupModule.setLightPopupAdConfiguration(requestId.toInt(), adUnitId, configuration)
|
|
335
|
+
promise.resolve(null)
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
@OptIn(ExperimentalStdlibApi::class)
|
|
339
|
+
internal abstract class DaroRNAppOpenModule(context: ReactContext) : DaroRNComponentModule(context) {
|
|
340
|
+
override fun getComponents(): MutableMap<String, Any> {
|
|
341
|
+
return AppOpenEvent.entries.associate { it.value to it.value }.toMutableMap()
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
private val daroRNAppOpenModule: DaroRNAppOpenModule = object : DaroRNAppOpenModule(reactContext) {}
|
|
346
|
+
|
|
347
|
+
@ReactMethod
|
|
348
|
+
override fun isAppOpenAdReady(requestId: Double, adUnitId: String, promise: Promise) {
|
|
349
|
+
promise.reject(APP_OPEN_UNSUPPORTED_CODE, APP_OPEN_UNSUPPORTED_MESSAGE)
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@ReactMethod
|
|
353
|
+
override fun loadAppOpenAd(requestId: Double, adUnitId: String, promise: Promise) {
|
|
354
|
+
promise.reject(APP_OPEN_UNSUPPORTED_CODE, APP_OPEN_UNSUPPORTED_MESSAGE)
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
@ReactMethod
|
|
358
|
+
override fun showAppOpenAd(
|
|
359
|
+
requestId: Double,
|
|
360
|
+
adUnitId: String,
|
|
361
|
+
customData: String?,
|
|
362
|
+
promise: Promise,
|
|
363
|
+
) {
|
|
364
|
+
promise.reject(APP_OPEN_UNSUPPORTED_CODE, APP_OPEN_UNSUPPORTED_MESSAGE)
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
@OptIn(ExperimentalStdlibApi::class)
|
|
368
|
+
internal abstract class DaroRNBannerModule(context: ReactContext) : DaroRNComponentModule(context) {
|
|
369
|
+
override fun getComponents(): MutableMap<String, Any> {
|
|
370
|
+
return InternalDaroRNBannerSize.entries.associate { it.key to it.name }.toMutableMap()
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
private val daroRNBannerModule: DaroRNBannerModule =
|
|
375
|
+
DaroRNBannerViewModuleImpl(context = reactContext)
|
|
376
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@file:Suppress("DEPRECATION")
|
|
2
|
+
|
|
3
|
+
package com.daro.reactnative
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.TurboReactPackage
|
|
6
|
+
import com.facebook.react.bridge.NativeModule
|
|
7
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
|
9
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
10
|
+
import com.facebook.react.uimanager.ViewManager
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DaroRNPackage : TurboReactPackage() {
|
|
14
|
+
|
|
15
|
+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
16
|
+
return when (name) {
|
|
17
|
+
DaroRNModule.NAME -> DaroRNModule(reactContext)
|
|
18
|
+
else -> null
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
23
|
+
return listOf(
|
|
24
|
+
DaroRNAdBannerViewManager(),
|
|
25
|
+
DaroRNAdNativeViewManager(),
|
|
26
|
+
DaroMediaViewManager(),
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
|
31
|
+
return ReactModuleInfoProvider {
|
|
32
|
+
mapOf(
|
|
33
|
+
DaroRNModule.NAME to ReactModuleInfo(
|
|
34
|
+
DaroRNModule.NAME,
|
|
35
|
+
DaroRNModule::class.java.name,
|
|
36
|
+
false,
|
|
37
|
+
false,
|
|
38
|
+
true,
|
|
39
|
+
false,
|
|
40
|
+
BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
package com.daro.reactnative
|
|
2
|
+
|
|
3
|
+
import android.app.Application
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import droom.daro.SDKConfig
|
|
6
|
+
import droom.daro.core.consent.CcpaStatus
|
|
7
|
+
import droom.daro.core.consent.CoppaStatus
|
|
8
|
+
import droom.daro.core.consent.GdprStatus
|
|
9
|
+
import droom.daro.sdk.Daro
|
|
10
|
+
|
|
11
|
+
internal object DaroSdkBridge {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 이 프로세스에서 SDK 초기화를 부른 적이 있나.
|
|
15
|
+
*
|
|
16
|
+
* **모듈 인스턴스가 아니라 여기(프로세스 수명 object)가 갖는다.** 모듈은
|
|
17
|
+
* ReactContext 수명이라 JS 리로드마다 새로 생기는데, 네이티브 SDK 는 그대로 서 있다.
|
|
18
|
+
* 모듈 필드로 두면 리로드 후 "초기화 안 됨"으로 보여 QA 가 다시 초기화를 누르고,
|
|
19
|
+
* 그 이중 초기화는 이 QA 화면이 재려던 바로 그 경로다.
|
|
20
|
+
*/
|
|
21
|
+
@Volatile
|
|
22
|
+
var isInitialized: Boolean = false
|
|
23
|
+
private set
|
|
24
|
+
|
|
25
|
+
fun initialize(application: Application, sdkConfig: SDKConfig) {
|
|
26
|
+
Daro.init(
|
|
27
|
+
application = application,
|
|
28
|
+
sdkConfig = sdkConfig,
|
|
29
|
+
)
|
|
30
|
+
isInitialized = true
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fun openDebugger(context: Context) {
|
|
34
|
+
Daro.openDebugger(context)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
fun setUserId(context: Context, userId: String) {
|
|
38
|
+
Daro.setUserId(context, userId)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
fun setGdpr(context: Context, status: GdprStatus, consentString: String) {
|
|
42
|
+
Daro.setGdpr(context, status, consentString)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
fun setCcpa(context: Context, status: CcpaStatus, consentString: String) {
|
|
46
|
+
Daro.setCcpa(context, status, consentString)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
fun setCoppa(context: Context, status: CoppaStatus) {
|
|
50
|
+
Daro.setCoppa(context, status)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -2,7 +2,7 @@ package com.daro.reactnative.constants
|
|
|
2
2
|
|
|
3
3
|
import droom.daro.core.model.DaroBannerSize
|
|
4
4
|
|
|
5
|
-
internal enum class
|
|
5
|
+
internal enum class InternalDaroRNBannerSize(val key: String) {
|
|
6
6
|
BANNER("BANNER_AD_FORMAT_LABEL"),
|
|
7
7
|
MREC("MREC_AD_FORMAT_LABEL"),
|
|
8
8
|
UNKNOWN("UNKNOWN_AD_FORMAT_LABEL");
|
|
@@ -16,7 +16,7 @@ internal enum class InternalDaroMBannerSize(val key: String) {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
companion object{
|
|
19
|
-
fun fromName(name: String):
|
|
19
|
+
fun fromName(name: String): InternalDaroRNBannerSize {
|
|
20
20
|
return entries.firstOrNull { it.name == name } ?: UNKNOWN
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
package com.daro.reactnative.event
|
|
2
2
|
|
|
3
|
-
internal interface
|
|
3
|
+
internal interface DaroRNEvent{
|
|
4
4
|
val value: String
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
internal enum class InterstitialEvent:
|
|
7
|
+
internal enum class InterstitialEvent: DaroRNEvent {
|
|
8
8
|
ON_INTERSTITIAL_LOADED_EVENT,
|
|
9
9
|
ON_INTERSTITIAL_LOAD_FAILED_EVENT,
|
|
10
10
|
ON_INTERSTITIAL_CLICKED_EVENT,
|
|
@@ -17,7 +17,7 @@ internal enum class InterstitialEvent: DaroMEvent {
|
|
|
17
17
|
get() = name
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
internal enum class RewardedEvent :
|
|
20
|
+
internal enum class RewardedEvent : DaroRNEvent {
|
|
21
21
|
ON_REWARDED_AD_LOADED_EVENT,
|
|
22
22
|
ON_REWARDED_AD_LOAD_FAILED_EVENT,
|
|
23
23
|
ON_REWARDED_AD_CLICKED_EVENT,
|
|
@@ -31,7 +31,7 @@ internal enum class RewardedEvent : DaroMEvent {
|
|
|
31
31
|
get() = name
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
internal enum class LightPopupEvent :
|
|
34
|
+
internal enum class LightPopupEvent : DaroRNEvent {
|
|
35
35
|
ON_LIGHTPOPUP_LOADED_EVENT,
|
|
36
36
|
ON_LIGHTPOPUP_LOAD_FAILED_EVENT,
|
|
37
37
|
ON_LIGHTPOPUP_CLICKED_EVENT,
|
|
@@ -44,14 +44,25 @@ internal enum class LightPopupEvent : DaroMEvent {
|
|
|
44
44
|
get() = name
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
internal enum class
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
internal enum class AppOpenEvent : DaroRNEvent {
|
|
48
|
+
ON_APPOPEN_AD_LOADED_EVENT,
|
|
49
|
+
ON_APPOPEN_AD_LOAD_FAILED_EVENT,
|
|
50
|
+
ON_APPOPEN_AD_CLICKED_EVENT,
|
|
51
|
+
ON_APPOPEN_AD_DISPLAYED_EVENT,
|
|
52
|
+
ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT,
|
|
53
|
+
ON_APPOPEN_AD_HIDDEN_EVENT,
|
|
54
|
+
ON_APPOPEN_AD_IMPRESSION_RECORDED;
|
|
54
55
|
|
|
55
56
|
override val value: String
|
|
56
57
|
get() = name
|
|
57
58
|
}
|
|
59
|
+
|
|
60
|
+
internal enum class AdViewEvent(
|
|
61
|
+
val registrationName: String,
|
|
62
|
+
override val value: String,
|
|
63
|
+
): DaroRNEvent {
|
|
64
|
+
ON_AD_CLICKED("onAdClickedEvent", "topAdClickedEvent"),
|
|
65
|
+
ON_AD_FAILED_TO_LOAD("onAdLoadFailedEvent", "topAdLoadFailedEvent"),
|
|
66
|
+
ON_AD_IMPRESSION("onAdImpressionRecordedEvent", "topAdImpressionRecordedEvent"),
|
|
67
|
+
ON_AD_LOADED("onAdLoadedEvent", "topAdLoadedEvent");
|
|
68
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
package com.daro.reactnative.impl
|
|
2
2
|
|
|
3
|
-
import com.daro.reactnative.
|
|
3
|
+
import com.daro.reactnative.DaroRNModule
|
|
4
4
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
5
|
|
|
6
|
-
internal class
|
|
6
|
+
internal class DaroRNBannerViewModuleImpl(
|
|
7
7
|
context: ReactApplicationContext,
|
|
8
|
-
) :
|
|
8
|
+
) : DaroRNModule.DaroRNBannerModule(context) {
|
|
9
9
|
|
|
10
10
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package com.daro.reactnative.impl
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
|
-
import com.daro.reactnative.
|
|
4
|
+
import com.daro.reactnative.DaroRNModule
|
|
5
5
|
import com.daro.reactnative.event.InterstitialEvent
|
|
6
6
|
import com.daro.reactnative.util.AdInfoUtil
|
|
7
7
|
import com.facebook.react.bridge.Promise
|
|
@@ -15,10 +15,10 @@ import droom.daro.core.model.DaroAdLoadError
|
|
|
15
15
|
import droom.daro.core.model.DaroInterstitialAd
|
|
16
16
|
import droom.daro.loader.DaroInterstitialAdLoader
|
|
17
17
|
|
|
18
|
-
internal class
|
|
18
|
+
internal class DaroRNInterstitialModuleImpl(
|
|
19
19
|
context: ReactApplicationContext,
|
|
20
20
|
private val getCurrentActivity: () -> Activity?,
|
|
21
|
-
) :
|
|
21
|
+
) : DaroRNModule.DaroRNInterstitialModule(context) {
|
|
22
22
|
|
|
23
23
|
private val currentActivity: Activity?
|
|
24
24
|
get() = getCurrentActivity()
|
|
@@ -85,7 +85,7 @@ internal class DaroMInterstitialModuleImpl(
|
|
|
85
85
|
private fun retrieveLoader(requestId: Int, adUnitId: String): DaroInterstitialAdLoader {
|
|
86
86
|
return loaderMap[requestId] ?: DaroInterstitialAdLoader(
|
|
87
87
|
context,
|
|
88
|
-
DaroInterstitialAdUnit(adUnitId
|
|
88
|
+
DaroInterstitialAdUnit(adUnitId)
|
|
89
89
|
).also {
|
|
90
90
|
loaderMap[requestId] = it
|
|
91
91
|
it.setListener(object : DaroInterstitialAdLoaderListener {
|
|
@@ -2,7 +2,7 @@ package com.daro.reactnative.impl
|
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
4
|
import androidx.core.graphics.toColorInt
|
|
5
|
-
import com.daro.reactnative.
|
|
5
|
+
import com.daro.reactnative.DaroRNModule
|
|
6
6
|
import com.daro.reactnative.event.LightPopupEvent
|
|
7
7
|
import com.daro.reactnative.util.AdInfoUtil
|
|
8
8
|
import com.facebook.react.bridge.Promise
|
|
@@ -18,10 +18,10 @@ import droom.daro.core.model.DaroLightPopupAd
|
|
|
18
18
|
import droom.daro.core.model.DaroLightPopupAdOptions
|
|
19
19
|
import droom.daro.loader.DaroLightPopupAdLoader
|
|
20
20
|
|
|
21
|
-
internal class
|
|
21
|
+
internal class DaroRNLightPopupModuleImpl(
|
|
22
22
|
context: ReactApplicationContext,
|
|
23
23
|
private val getCurrentActivity: () -> Activity?,
|
|
24
|
-
) :
|
|
24
|
+
) : DaroRNModule.DaroRNLightPopupModule(context) {
|
|
25
25
|
|
|
26
26
|
private val currentActivity: Activity?
|
|
27
27
|
get() = getCurrentActivity()
|
|
@@ -122,7 +122,7 @@ internal class DaroMLightPopupModuleImpl(
|
|
|
122
122
|
private fun retrieveLoader(requestId: Int, adUnitId: String): DaroLightPopupAdLoader {
|
|
123
123
|
return loaderMap[requestId] ?: DaroLightPopupAdLoader(
|
|
124
124
|
context,
|
|
125
|
-
DaroLightPopupAdUnit(adUnitId,
|
|
125
|
+
DaroLightPopupAdUnit(adUnitId, optionMap[requestId] ?: DaroLightPopupAdOptions())
|
|
126
126
|
).also {
|
|
127
127
|
loaderMap[requestId] = it
|
|
128
128
|
it.setListener(object : DaroLightPopupAdLoaderListener {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package com.daro.reactnative.impl
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
|
-
import com.daro.reactnative.
|
|
4
|
+
import com.daro.reactnative.DaroRNModule
|
|
5
5
|
import com.daro.reactnative.event.RewardedEvent
|
|
6
6
|
import com.daro.reactnative.util.AdInfoUtil
|
|
7
7
|
import com.facebook.react.bridge.Promise
|
|
@@ -15,10 +15,10 @@ import droom.daro.core.model.DaroAdLoadError
|
|
|
15
15
|
import droom.daro.core.model.DaroRewardedAd
|
|
16
16
|
import droom.daro.loader.DaroRewardedAdLoader
|
|
17
17
|
|
|
18
|
-
internal class
|
|
18
|
+
internal class DaroRNRewardedAdModuleImpl(
|
|
19
19
|
context: ReactApplicationContext,
|
|
20
20
|
private val getCurrentActivity: () -> Activity?,
|
|
21
|
-
) :
|
|
21
|
+
) : DaroRNModule.DaroRNRewardedModule(context) {
|
|
22
22
|
|
|
23
23
|
private val currentActivity: Activity?
|
|
24
24
|
get() = getCurrentActivity()
|
|
@@ -100,7 +100,7 @@ internal class DaroMRewardedAdModuleImpl(
|
|
|
100
100
|
private fun retrieveLoader(requestId: Int, adUnitId: String): DaroRewardedAdLoader {
|
|
101
101
|
return loaderMap[requestId] ?: DaroRewardedAdLoader(
|
|
102
102
|
context,
|
|
103
|
-
DaroRewardedAdUnit(adUnitId
|
|
103
|
+
DaroRewardedAdUnit(adUnitId)
|
|
104
104
|
).also {
|
|
105
105
|
loaderMap[requestId] = it
|
|
106
106
|
it.setListener(
|
|
@@ -8,10 +8,22 @@ import droom.daro.core.model.DaroAdLoadError
|
|
|
8
8
|
import droom.daro.core.model.DaroRewardedAd
|
|
9
9
|
|
|
10
10
|
internal object AdInfoUtil {
|
|
11
|
+
// 모듈 경로(전면·리워드·앱오픈·라이트팝업)와 뷰 경로(배너·네이티브)가 **둘 다 여기를
|
|
12
|
+
// 지난다.** 그래서 귀속을 여기 한 번만 실으면 모든 포맷이 같이 얻는다.
|
|
11
13
|
fun getAdInfo(adUnitId: String, ad: DaroAdInfo): WritableMap {
|
|
12
14
|
val adInfo = Arguments.createMap()
|
|
13
15
|
adInfo.putString("adUnitId", adUnitId)
|
|
14
16
|
adInfo.putInt("latencyMillis", ad.latency)
|
|
17
|
+
// SDK 가 정한 어휘를 **그대로** 넘긴다 — 래퍼에서 매핑하지 않는다. 발행 tarball 이
|
|
18
|
+
// android/ios 를 소스로 싣기 때문에 여기 매핑을 두면 그대로 읽힌다.
|
|
19
|
+
//
|
|
20
|
+
// **공개 표면인 DaroAdInfo.mediationPlatform 을 읽는다** (DARO-1587). enum 의
|
|
21
|
+
// mediationPlatformName 은 internal 로 닫혔고, 그쪽은 서버 payload 용 벤더 이름
|
|
22
|
+
// (admob/applovin)이라 애초에 소비자에게 나가면 안 되는 값이다. iOS 브릿지도
|
|
23
|
+
// 같은 이름의 프로퍼티를 읽는다 — 두 플랫폼이 같은 모양이다.
|
|
24
|
+
adInfo.putString("mediationPlatform", ad.mediationPlatform)
|
|
25
|
+
// 벤더 어휘. 정규화하지 않는다 (AdMob adSourceName / AppLovin networkName).
|
|
26
|
+
adInfo.putString("adNetwork", ad.adNetwork)
|
|
15
27
|
|
|
16
28
|
return adInfo
|
|
17
29
|
}
|