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.
Files changed (241) hide show
  1. package/README.md +2 -5
  2. package/android/build.gradle +17 -14
  3. package/android/src/main/java/com/daro/reactnative/DaroMediaViewManager.kt +25 -0
  4. package/android/src/main/java/com/daro/reactnative/DaroRNAdBannerViewManager.kt +105 -0
  5. package/android/src/main/java/com/daro/reactnative/DaroRNAdNativeViewManager.kt +163 -0
  6. package/android/src/main/java/com/daro/reactnative/DaroRNModule.kt +376 -0
  7. package/android/src/main/java/com/daro/reactnative/DaroRNPackage.kt +45 -0
  8. package/android/src/main/java/com/daro/reactnative/DaroSdkBridge.kt +52 -0
  9. package/android/src/main/java/com/daro/reactnative/constants/{InternalDaroMBannerSize.kt → InternalDaroRNBannerSize.kt} +2 -2
  10. package/android/src/main/java/com/daro/reactnative/event/{DaroMEvent.kt → DaroRNEvent.kt} +22 -11
  11. package/android/src/main/java/com/daro/reactnative/impl/{DaroMBannerViewModuleImpl.kt → DaroRNBannerViewModuleImpl.kt} +3 -3
  12. package/android/src/main/java/com/daro/reactnative/impl/{DaroMInterstitialModuleImpl.kt → DaroRNInterstitialModuleImpl.kt} +4 -4
  13. package/android/src/main/java/com/daro/reactnative/impl/{DaroMLightPopupModuleImpl.kt → DaroRNLightPopupModuleImpl.kt} +4 -4
  14. package/android/src/main/java/com/daro/reactnative/impl/{DaroMRewardedAdModuleImpl.kt → DaroRNRewardedAdModuleImpl.kt} +4 -4
  15. package/android/src/main/java/com/daro/reactnative/util/AdInfoUtil.kt +12 -0
  16. package/android/src/main/java/com/daro/reactnative/util/DaroQaProbe.kt +147 -0
  17. package/android/src/main/java/com/daro/reactnative/util/EventEmitterUtil.kt +20 -7
  18. package/android/src/main/java/com/daro/reactnative/view/DaroMediaView.kt +123 -0
  19. package/android/src/main/java/com/daro/reactnative/view/{DaroMAdBannerViewContainer.kt → DaroRNAdBannerViewContainer.kt} +2 -3
  20. package/android/src/main/java/com/daro/reactnative/view/DaroRNAdNativeViewContainer.kt +623 -0
  21. package/android/src/newarch/java/com/daro/reactnative/DaroRNModuleSpec.kt +6 -0
  22. package/android/src/oldarch/java/com/daro/reactnative/DaroRNModuleSpec.kt +119 -0
  23. package/ios/{DaroMModule+AppOpen.swift → DaroRNModule+AppOpen.swift} +22 -20
  24. package/ios/DaroRNModule+Consent.swift +88 -0
  25. package/ios/{DaroMModule+Interstitial.swift → DaroRNModule+Interstitial.swift} +21 -18
  26. package/ios/{DaroMModule+LightPopup.swift → DaroRNModule+LightPopup.swift} +18 -15
  27. package/ios/DaroRNModule+Qa.swift +158 -0
  28. package/ios/{DaroMModule+Rewarded.swift → DaroRNModule+Rewarded.swift} +22 -19
  29. package/ios/DaroRNModule.mm +88 -0
  30. package/ios/{DaroMModule.swift → DaroRNModule.swift} +24 -10
  31. package/ios/Fabric/DaroRNAdBannerComponentView.mm +219 -0
  32. package/ios/Fabric/DaroRNFabricEventSink.mm +31 -0
  33. package/ios/Fabric/DaroRNFabricPropApplier.mm +123 -0
  34. package/ios/Fabric/DaroRNNativeAdComponentView.mm +306 -0
  35. package/ios/{DaroMAdBannerViewManager.m → Paper/DaroRNAdBannerViewManager.m} +4 -2
  36. package/ios/Paper/DaroRNAdBannerViewManager.swift +21 -0
  37. package/ios/{DaroMNativeAdViewManager.m → Paper/DaroRNNativeAdViewManager.m} +3 -2
  38. package/ios/Paper/DaroRNNativeAdViewManager.swift +22 -0
  39. package/ios/Shared/DaroMediationDebugger.swift +14 -0
  40. package/ios/{mediation/admob → Shared}/DaroMediationTypes.swift +1 -0
  41. package/ios/Shared/DaroRNAdEventSink.swift +24 -0
  42. package/ios/Shared/DaroRNBannerAdView.swift +188 -0
  43. package/ios/Shared/DaroRNNativeAdLoadCoordinator.swift +49 -0
  44. package/ios/Shared/DaroRNNativeAdView.swift +575 -0
  45. package/ios/Shared/DaroRNNativeAssetResolver.swift +53 -0
  46. package/lib/commonjs/AdBannerView.js +20 -41
  47. package/lib/commonjs/AdBannerView.js.map +1 -1
  48. package/lib/commonjs/AppOpenAd.js +45 -12
  49. package/lib/commonjs/AppOpenAd.js.map +1 -1
  50. package/lib/commonjs/DaroMediaViewNativeComponent.ts +9 -0
  51. package/lib/commonjs/DaroRNAdBannerViewNativeComponent.ts +50 -0
  52. package/lib/commonjs/DaroRNNativeAdViewNativeComponent.ts +65 -0
  53. package/lib/commonjs/EventEmitter.js +4 -5
  54. package/lib/commonjs/EventEmitter.js.map +1 -1
  55. package/lib/commonjs/InterstitialAd.js +9 -11
  56. package/lib/commonjs/InterstitialAd.js.map +1 -1
  57. package/lib/commonjs/LightPopupAd.js +11 -12
  58. package/lib/commonjs/LightPopupAd.js.map +1 -1
  59. package/lib/commonjs/NativeDaroModule.js +9 -0
  60. package/lib/commonjs/NativeDaroModule.js.map +1 -0
  61. package/lib/commonjs/RewardedAd.js +9 -11
  62. package/lib/commonjs/RewardedAd.js.map +1 -1
  63. package/lib/commonjs/codegen-env.d.js +2 -0
  64. package/lib/commonjs/codegen-env.d.js.map +1 -0
  65. package/lib/commonjs/hooks/useInterstitialAd.js +110 -0
  66. package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
  67. package/lib/commonjs/hooks/useLightPopupAd.js +114 -0
  68. package/lib/commonjs/hooks/useLightPopupAd.js.map +1 -0
  69. package/lib/commonjs/hooks/useRewardedAd.js +113 -0
  70. package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
  71. package/lib/commonjs/index.js +150 -13
  72. package/lib/commonjs/index.js.map +1 -1
  73. package/lib/commonjs/nativeAd/NativeAdView.js +23 -22
  74. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
  75. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +43 -31
  76. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
  77. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +34 -7
  78. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
  79. package/lib/module/AdBannerView.js +19 -42
  80. package/lib/module/AdBannerView.js.map +1 -1
  81. package/lib/module/AppOpenAd.js +45 -13
  82. package/lib/module/AppOpenAd.js.map +1 -1
  83. package/lib/module/DaroMediaViewNativeComponent.ts +9 -0
  84. package/lib/module/DaroRNAdBannerViewNativeComponent.ts +50 -0
  85. package/lib/module/DaroRNNativeAdViewNativeComponent.ts +65 -0
  86. package/lib/module/EventEmitter.js +4 -6
  87. package/lib/module/EventEmitter.js.map +1 -1
  88. package/lib/module/InterstitialAd.js +8 -11
  89. package/lib/module/InterstitialAd.js.map +1 -1
  90. package/lib/module/LightPopupAd.js +11 -13
  91. package/lib/module/LightPopupAd.js.map +1 -1
  92. package/lib/module/NativeDaroModule.js +5 -0
  93. package/lib/module/NativeDaroModule.js.map +1 -0
  94. package/lib/module/RewardedAd.js +8 -11
  95. package/lib/module/RewardedAd.js.map +1 -1
  96. package/lib/module/codegen-env.d.js +2 -0
  97. package/lib/module/codegen-env.d.js.map +1 -0
  98. package/lib/module/hooks/useInterstitialAd.js +106 -0
  99. package/lib/module/hooks/useInterstitialAd.js.map +1 -0
  100. package/lib/module/hooks/useLightPopupAd.js +110 -0
  101. package/lib/module/hooks/useLightPopupAd.js.map +1 -0
  102. package/lib/module/hooks/useRewardedAd.js +109 -0
  103. package/lib/module/hooks/useRewardedAd.js.map +1 -0
  104. package/lib/module/index.js +108 -13
  105. package/lib/module/index.js.map +1 -1
  106. package/lib/module/nativeAd/NativeAdView.js +22 -23
  107. package/lib/module/nativeAd/NativeAdView.js.map +1 -1
  108. package/lib/module/nativeAd/NativeAdViewComponents.js +45 -34
  109. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
  110. package/lib/module/nativeAd/NativeAdViewProvider.js +35 -8
  111. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
  112. package/lib/typescript/commonjs/plugin/src/index.d.ts +2 -6
  113. package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +2 -6
  115. package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/plugin/src/withIos.d.ts +2 -6
  117. package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/AdBannerView.d.ts +2 -2
  119. package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/AppOpenAd.d.ts +2 -2
  121. package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts +6 -0
  123. package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/src/DaroRNAdBannerViewNativeComponent.d.ts +33 -0
  125. package/lib/typescript/commonjs/src/DaroRNAdBannerViewNativeComponent.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/src/DaroRNNativeAdViewNativeComponent.d.ts +43 -0
  127. package/lib/typescript/commonjs/src/DaroRNNativeAdViewNativeComponent.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/NativeDaroModule.d.ts +70 -0
  132. package/lib/typescript/commonjs/src/NativeDaroModule.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
  134. package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts +19 -0
  135. package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts +23 -0
  137. package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts +20 -0
  139. package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/src/index.d.ts +86 -1
  141. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +1 -0
  143. package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
  146. package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/types/AdInfo.d.ts +15 -0
  148. package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/src/types/AdProps.d.ts +0 -1
  150. package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +2 -0
  152. package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -1
  153. package/lib/typescript/module/plugin/src/index.d.ts +2 -6
  154. package/lib/typescript/module/plugin/src/index.d.ts.map +1 -1
  155. package/lib/typescript/module/plugin/src/withAndroid.d.ts +2 -6
  156. package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -1
  157. package/lib/typescript/module/plugin/src/withIos.d.ts +2 -6
  158. package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -1
  159. package/lib/typescript/module/src/AdBannerView.d.ts +2 -2
  160. package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
  161. package/lib/typescript/module/src/AppOpenAd.d.ts +2 -2
  162. package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
  163. package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts +6 -0
  164. package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
  165. package/lib/typescript/module/src/DaroRNAdBannerViewNativeComponent.d.ts +33 -0
  166. package/lib/typescript/module/src/DaroRNAdBannerViewNativeComponent.d.ts.map +1 -0
  167. package/lib/typescript/module/src/DaroRNNativeAdViewNativeComponent.d.ts +43 -0
  168. package/lib/typescript/module/src/DaroRNNativeAdViewNativeComponent.d.ts.map +1 -0
  169. package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
  170. package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
  171. package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
  172. package/lib/typescript/module/src/NativeDaroModule.d.ts +70 -0
  173. package/lib/typescript/module/src/NativeDaroModule.d.ts.map +1 -0
  174. package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
  175. package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts +19 -0
  176. package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts.map +1 -0
  177. package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts +23 -0
  178. package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts.map +1 -0
  179. package/lib/typescript/module/src/hooks/useRewardedAd.d.ts +20 -0
  180. package/lib/typescript/module/src/hooks/useRewardedAd.d.ts.map +1 -0
  181. package/lib/typescript/module/src/index.d.ts +86 -1
  182. package/lib/typescript/module/src/index.d.ts.map +1 -1
  183. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +1 -0
  184. package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -1
  185. package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  186. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
  187. package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  188. package/lib/typescript/module/src/types/AdInfo.d.ts +15 -0
  189. package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
  190. package/lib/typescript/module/src/types/AdProps.d.ts +0 -1
  191. package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -1
  192. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +2 -0
  193. package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -1
  194. package/package.json +12 -5
  195. package/plugin/build/index.d.ts +2 -6
  196. package/plugin/build/index.js +21 -56
  197. package/plugin/build/withAndroid.d.ts +2 -6
  198. package/plugin/build/withAndroid.js +123 -83
  199. package/plugin/build/withIos.d.ts +2 -6
  200. package/plugin/build/withIos.js +37 -34
  201. package/react-native-daro.podspec +4 -2
  202. package/src/AdBannerView.tsx +24 -63
  203. package/src/AppOpenAd.ts +48 -17
  204. package/src/DaroMediaViewNativeComponent.ts +9 -0
  205. package/src/DaroRNAdBannerViewNativeComponent.ts +50 -0
  206. package/src/DaroRNNativeAdViewNativeComponent.ts +65 -0
  207. package/src/EventEmitter.ts +4 -5
  208. package/src/InterstitialAd.ts +8 -10
  209. package/src/LightPopupAd.ts +11 -12
  210. package/src/NativeDaroModule.ts +106 -0
  211. package/src/RewardedAd.ts +8 -10
  212. package/src/codegen-env.d.ts +45 -0
  213. package/src/hooks/useInterstitialAd.ts +117 -0
  214. package/src/hooks/useLightPopupAd.ts +132 -0
  215. package/src/hooks/useRewardedAd.ts +122 -0
  216. package/src/index.tsx +157 -22
  217. package/src/nativeAd/NativeAdView.tsx +41 -54
  218. package/src/nativeAd/NativeAdViewComponents.tsx +80 -42
  219. package/src/nativeAd/NativeAdViewProvider.tsx +75 -17
  220. package/src/types/AdInfo.ts +17 -0
  221. package/src/types/AdProps.ts +0 -2
  222. package/src/types/NativeAdViewProps.ts +7 -0
  223. package/android/src/admob/java/com/daro/reactnative/DaroSdkBridge.kt +0 -23
  224. package/android/src/main/java/com/daro/reactnative/DaroMAdBannerViewManager.kt +0 -132
  225. package/android/src/main/java/com/daro/reactnative/DaroMAdNativeViewManager.kt +0 -136
  226. package/android/src/main/java/com/daro/reactnative/DaroMModule.kt +0 -202
  227. package/android/src/main/java/com/daro/reactnative/DaroMPackage.kt +0 -21
  228. package/android/src/main/java/com/daro/reactnative/view/DaroMAdNativeViewContainer.kt +0 -375
  229. package/ios/DaroMAdBannerViewManager.swift +0 -91
  230. package/ios/DaroMModule.mm +0 -45
  231. package/ios/DaroMNativeAdViewManager.swift +0 -291
  232. package/ios/mediation/admob/DaroMediationDebugger.swift +0 -11
  233. package/lib/commonjs/types/DaroMMobileAds.js +0 -2
  234. package/lib/commonjs/types/DaroMMobileAds.js.map +0 -1
  235. package/lib/module/types/DaroMMobileAds.js +0 -2
  236. package/lib/module/types/DaroMMobileAds.js.map +0 -1
  237. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts +0 -6
  238. package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +0 -1
  239. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts +0 -6
  240. package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +0 -1
  241. 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 InternalDaroMBannerSize(val key: String) {
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): InternalDaroMBannerSize {
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 DaroMEvent{
3
+ internal interface DaroRNEvent{
4
4
  val value: String
5
5
  }
6
6
 
7
- internal enum class InterstitialEvent: DaroMEvent {
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 : DaroMEvent {
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 : DaroMEvent {
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 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");
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.DaroMModule
3
+ import com.daro.reactnative.DaroRNModule
4
4
  import com.facebook.react.bridge.ReactApplicationContext
5
5
 
6
- internal class DaroMBannerViewModuleImpl(
6
+ internal class DaroRNBannerViewModuleImpl(
7
7
  context: ReactApplicationContext,
8
- ) : DaroMModule.DaroMBannerModule(context) {
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.DaroMModule
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 DaroMInterstitialModuleImpl(
18
+ internal class DaroRNInterstitialModuleImpl(
19
19
  context: ReactApplicationContext,
20
20
  private val getCurrentActivity: () -> Activity?,
21
- ) : DaroMModule.DaroMInterstitialModule(context) {
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, 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.DaroMModule
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 DaroMLightPopupModuleImpl(
21
+ internal class DaroRNLightPopupModuleImpl(
22
22
  context: ReactApplicationContext,
23
23
  private val getCurrentActivity: () -> Activity?,
24
- ) : DaroMModule.DaroMLightPopupModule(context) {
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, adUnitId, optionMap[requestId] ?: DaroLightPopupAdOptions())
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.DaroMModule
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 DaroMRewardedAdModuleImpl(
18
+ internal class DaroRNRewardedAdModuleImpl(
19
19
  context: ReactApplicationContext,
20
20
  private val getCurrentActivity: () -> Activity?,
21
- ) : DaroMModule.DaroMRewardedModule(context) {
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, 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
  }