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,218 @@
|
|
|
1
|
+
import GoogleMobileAds
|
|
2
|
+
import Daro
|
|
3
|
+
import os.log
|
|
4
|
+
|
|
5
|
+
@objc(DaroMModule)
|
|
6
|
+
class DaroMModule: RCTEventEmitter {
|
|
7
|
+
|
|
8
|
+
// 중앙집중식 로거 - 다른 파일에서도 사용 가능
|
|
9
|
+
static let logger = Logger(subsystem: "com.darom.react-native", category: "DaroMModule")
|
|
10
|
+
|
|
11
|
+
enum Event: String, CaseIterable {
|
|
12
|
+
|
|
13
|
+
// MARK: - Interstitial Ad
|
|
14
|
+
|
|
15
|
+
case onInterstitialLoadedEvent = "ON_INTERSTITIAL_LOADED_EVENT"
|
|
16
|
+
case onInterstitialLoadFailedEvent = "ON_INTERSTITIAL_LOAD_FAILED_EVENT"
|
|
17
|
+
case onInterstitialClickedEvent = "ON_INTERSTITIAL_CLICKED_EVENT"
|
|
18
|
+
case onInterstitialDisplayedEvent = "ON_INTERSTITIAL_DISPLAYED_EVENT"
|
|
19
|
+
case onInterstitialAdFailedToDisplayEvent = "ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT"
|
|
20
|
+
case onInterstitialHiddenEvent = "ON_INTERSTITIAL_HIDDEN_EVENT"
|
|
21
|
+
case onInterstitialAdImpressionRecordedEvent = "ON_INTERSTITIAL_AD_IMPRESSION_RECORDED"
|
|
22
|
+
|
|
23
|
+
// MARK: - Rewarded Ad
|
|
24
|
+
|
|
25
|
+
case onRewardedAdLoadedEvent = "ON_REWARDED_AD_LOADED_EVENT"
|
|
26
|
+
case onRewardedAdLoadFailedEvent = "ON_REWARDED_AD_LOAD_FAILED_EVENT"
|
|
27
|
+
case onRewardedAdClickedEvent = "ON_REWARDED_AD_CLICKED_EVENT"
|
|
28
|
+
case onRewardedAdDisplayedEvent = "ON_REWARDED_AD_DISPLAYED_EVENT"
|
|
29
|
+
case onRewardedAdFailedToDisplayEvent = "ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT"
|
|
30
|
+
case onRewardedAdHiddenEvent = "ON_REWARDED_AD_HIDDEN_EVENT"
|
|
31
|
+
case onRewardedAdReceivedRewardEvent = "ON_REWARDED_AD_RECEIVED_REWARD_EVENT"
|
|
32
|
+
case onRewardedAdImpressionRecordedEvent = "ON_REWARDED_AD_IMPRESSION_RECORDED"
|
|
33
|
+
|
|
34
|
+
// MARK: - AppOpen Ad
|
|
35
|
+
|
|
36
|
+
case onAppOpenAdLoadedEvent = "ON_APPOPEN_AD_LOADED_EVENT"
|
|
37
|
+
case onAppOpenAdLoadFailedEvent = "ON_APPOPEN_AD_LOAD_FAILED_EVENT"
|
|
38
|
+
case onAppOpenAdClickedEvent = "ON_APPOPEN_AD_CLICKED_EVENT"
|
|
39
|
+
case onAppOpenAdDisplayedEvent = "ON_APPOPEN_AD_DISPLAYED_EVENT"
|
|
40
|
+
case onAppOpenAdFailedToDisplayEvent = "ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT"
|
|
41
|
+
case onAppOpenAdHiddenEvent = "ON_APPOPEN_AD_HIDDEN_EVENT"
|
|
42
|
+
case onAppOpenAdImpressionRecordedEvent = "ON_APPOPEN_AD_IMPRESSION_RECORDED"
|
|
43
|
+
|
|
44
|
+
// MARK: - LightPopup Ad
|
|
45
|
+
case onLightPopupLoadedEvent = "ON_LIGHTPOPUP_LOADED_EVENT"
|
|
46
|
+
case onLightPopupLoadFailedEvent = "ON_LIGHTPOPUP_LOAD_FAILED_EVENT"
|
|
47
|
+
case onLightPopupClickedEvent = "ON_LIGHTPOPUP_CLICKED_EVENT"
|
|
48
|
+
case onLightPopupDisplayedEvent = "ON_LIGHTPOPUP_DISPLAYED_EVENT"
|
|
49
|
+
case onLightPopupAdFailedToDisplayEvent = "ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT"
|
|
50
|
+
case onLightPopupHiddenEvent = "ON_LIGHTPOPUP_HIDDEN_EVENT"
|
|
51
|
+
case onLightPopupAdImpressionRecordedEvent = "ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED"
|
|
52
|
+
|
|
53
|
+
static var supportedEvents: [String] {
|
|
54
|
+
allCases.map(\.rawValue)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static var constantsToExports: [AnyHashable: Any] {
|
|
58
|
+
Event.allCases.reduce(into: [:]) { result, event in
|
|
59
|
+
result[event.rawValue] = event.rawValue
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
enum Constants: String, CaseIterable {
|
|
65
|
+
case bannerAdFormatLabel = "BANNER_AD_FORMAT_LABEL"
|
|
66
|
+
case mrecAdFormatLabel = "MREC_AD_FORMAT_LABEL"
|
|
67
|
+
|
|
68
|
+
var value: String {
|
|
69
|
+
switch self {
|
|
70
|
+
case .bannerAdFormatLabel:
|
|
71
|
+
return DaroAdFormat.banner.rawValue
|
|
72
|
+
case .mrecAdFormatLabel:
|
|
73
|
+
return DaroAdFormat.mrec.rawValue
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static var constantsToExports: [AnyHashable: Any] {
|
|
78
|
+
allCases.reduce(into: [:]) { result, constant in
|
|
79
|
+
result[constant.rawValue] = constant.value
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static var sdkInitialized: Bool = false
|
|
85
|
+
// 광고 인스턴스 저장소
|
|
86
|
+
internal var interstitials: [String: InterstitialAd] = [:]
|
|
87
|
+
internal var rewardedAds: [String: RewardedAd] = [:]
|
|
88
|
+
internal var appOpenAds: [String: AppOpenAd] = [:]
|
|
89
|
+
internal var lightPopups: [String: LightPopupAd] = [:]
|
|
90
|
+
internal var lightPopupConfigurations: [String: [String: Any]] = [:]
|
|
91
|
+
|
|
92
|
+
// MARK: - SDK 초기화 및 설정
|
|
93
|
+
|
|
94
|
+
@objc(isInitialized::)
|
|
95
|
+
func isInitialized(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
96
|
+
resolve(Self.sdkInitialized)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@objc(initializeSdk::)
|
|
100
|
+
func initializeSdk(
|
|
101
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
102
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
103
|
+
) {
|
|
104
|
+
// 이미 초기화되었는지 확인
|
|
105
|
+
if Self.sdkInitialized {
|
|
106
|
+
Self.logger.debug("SDK already initialized, returning success")
|
|
107
|
+
resolve(Void())
|
|
108
|
+
return
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// 초기화 진행
|
|
112
|
+
DaroAds.shared.logLevel = .debug
|
|
113
|
+
DaroAds.shared.initialized { error in
|
|
114
|
+
if let error {
|
|
115
|
+
Self.logger.error("SDK initialization failed: \(error.localizedDescription)")
|
|
116
|
+
reject("INIT_ERROR", error.localizedDescription, error)
|
|
117
|
+
} else {
|
|
118
|
+
Self.sdkInitialized = true
|
|
119
|
+
Self.logger.info("SDK initialized successfully")
|
|
120
|
+
resolve(Void())
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@objc(showMediationDebugger::)
|
|
126
|
+
func showMediationDebugger(resolve: @escaping RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
127
|
+
// ALSdk.shared().showMediationDebugger()
|
|
128
|
+
DispatchQueue.main.async {
|
|
129
|
+
MobileAds.shared.presentAdInspector(from: nil) { error in
|
|
130
|
+
// Error will be non-nil if there was an issue and the inspector was not displayed.
|
|
131
|
+
}
|
|
132
|
+
resolve(Void())
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@objc(setUserId:::)
|
|
137
|
+
func setUserId(userId: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
138
|
+
DaroAds.shared.userId = userId
|
|
139
|
+
resolve(Void())
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
class InterstitialAd {
|
|
143
|
+
let loader: DaroInterstitialAdLoader
|
|
144
|
+
var loadedAd: DaroInterstitialAd?
|
|
145
|
+
|
|
146
|
+
init(loader: DaroInterstitialAdLoader) {
|
|
147
|
+
self.loader = loader
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
class RewardedAd {
|
|
152
|
+
let loader: DaroRewardedAdLoader
|
|
153
|
+
var loadedAd: DaroRewardedAd?
|
|
154
|
+
|
|
155
|
+
init(loader: DaroRewardedAdLoader) {
|
|
156
|
+
self.loader = loader
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
class AppOpenAd {
|
|
161
|
+
let loader: DaroAppOpenAdLoader
|
|
162
|
+
var loadedAd: DaroAppOpenAd?
|
|
163
|
+
|
|
164
|
+
init(loader: DaroAppOpenAdLoader) {
|
|
165
|
+
self.loader = loader
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
class LightPopupAd {
|
|
170
|
+
let loader: DaroLightPopupAdLoader
|
|
171
|
+
var loadedAd: DaroLightPopupAd?
|
|
172
|
+
|
|
173
|
+
init(loader: DaroLightPopupAdLoader) {
|
|
174
|
+
self.loader = loader
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// MARK: - Constants
|
|
180
|
+
extension DaroMModule {
|
|
181
|
+
|
|
182
|
+
// https://reactnative.dev/docs/legacy/native-modules-ios#sending-events-to-javascript
|
|
183
|
+
// Sending Events to JavaScript
|
|
184
|
+
override func supportedEvents() -> [String]! {
|
|
185
|
+
Event.supportedEvents
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// https://reactnative.dev/docs/legacy/native-modules-ios#exporting-constants
|
|
189
|
+
// Exporting Constants
|
|
190
|
+
override func constantsToExport() -> [AnyHashable: Any]! {
|
|
191
|
+
Event.constantsToExports.merging(Constants.constantsToExports) { (_, new) in new }
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// MARK: - Helpers
|
|
196
|
+
extension DaroMModule {
|
|
197
|
+
func sendEvent(with event: Event, body: Any?) {
|
|
198
|
+
sendEvent(withName: event.rawValue, body: body)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
extension DaroAdInfo {
|
|
203
|
+
var toBody: [String: Any] {
|
|
204
|
+
return [
|
|
205
|
+
"adUnitId": self.adUnitId,
|
|
206
|
+
"latencyMillis": self.latency as Any,
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
extension DaroError {
|
|
212
|
+
var toBody: [String: Any] {
|
|
213
|
+
return [
|
|
214
|
+
"code": self.code,
|
|
215
|
+
"message": self.message,
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#import <React/RCTViewManager.h>
|
|
2
|
+
|
|
3
|
+
@interface RCT_EXTERN_MODULE (DaroMNativeAdViewManager, RCTViewManager)
|
|
4
|
+
|
|
5
|
+
RCT_EXPORT_VIEW_PROPERTY(adUnitId, NSString)
|
|
6
|
+
|
|
7
|
+
RCT_EXPORT_VIEW_PROPERTY(titleView, NSNumber)
|
|
8
|
+
RCT_EXPORT_VIEW_PROPERTY(bodyView, NSNumber)
|
|
9
|
+
RCT_EXPORT_VIEW_PROPERTY(callToActionView, NSNumber)
|
|
10
|
+
RCT_EXPORT_VIEW_PROPERTY(iconView, NSNumber)
|
|
11
|
+
RCT_EXPORT_VIEW_PROPERTY(optionsView, NSNumber)
|
|
12
|
+
RCT_EXPORT_VIEW_PROPERTY(mediaView, NSNumber)
|
|
13
|
+
|
|
14
|
+
RCT_EXPORT_VIEW_PROPERTY(titleViewStyleProps, NSDictionary)
|
|
15
|
+
RCT_EXPORT_VIEW_PROPERTY(bodyViewStyleProps, NSDictionary)
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(callToActionViewStyleProps, NSDictionary)
|
|
17
|
+
RCT_EXPORT_VIEW_PROPERTY(iconViewStyleProps, NSDictionary)
|
|
18
|
+
RCT_EXPORT_VIEW_PROPERTY(mediaViewStyleProps, NSDictionary)
|
|
19
|
+
|
|
20
|
+
RCT_EXPORT_VIEW_PROPERTY(onAdLoadedEvent, RCTDirectEventBlock)
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(onAdLoadFailedEvent, RCTDirectEventBlock)
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(onAdClickedEvent, RCTDirectEventBlock)
|
|
23
|
+
RCT_EXPORT_VIEW_PROPERTY(onAdImpressionRecordedEvent, RCTDirectEventBlock)
|
|
24
|
+
|
|
25
|
+
RCT_EXTERN_METHOD(loadAd : (nonnull NSNumber *)viewTag)
|
|
26
|
+
@end
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import Combine
|
|
2
|
+
import Daro
|
|
3
|
+
import UIKit
|
|
4
|
+
|
|
5
|
+
@objc(DaroMNativeAdViewManager)
|
|
6
|
+
class DaroMNativeAdViewManager: RCTViewManager {
|
|
7
|
+
override func view() -> RNDaroMNativeAdView {
|
|
8
|
+
RNDaroMNativeAdView(bridge: bridge)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@objc override static func requiresMainQueueSetup() -> Bool {
|
|
12
|
+
false
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@objc(loadAd:)
|
|
16
|
+
func loadAd(viewTag: NSNumber) {
|
|
17
|
+
bridge?.uiManager.addUIBlock({ uiManager, viewRegistry in
|
|
18
|
+
if let view = viewRegistry?[viewTag] as? RNDaroMNativeAdView {
|
|
19
|
+
view._internalAdView?.loadAd()
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
final class RNDaroMNativeAdView: UIView, RenderDelegate {
|
|
26
|
+
|
|
27
|
+
var _internalAdView: BridgeNativeAdView?
|
|
28
|
+
var adUnit: DaroAdUnit
|
|
29
|
+
|
|
30
|
+
@objc var adUnitId: String?
|
|
31
|
+
@objc var titleViewStyleProps: NSDictionary? {
|
|
32
|
+
didSet {
|
|
33
|
+
_internalTitleLabel.applyStyle(titleViewStyleProps)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
@objc var titleView: NSNumber?
|
|
37
|
+
@objc var bodyViewStyleProps: NSDictionary? {
|
|
38
|
+
didSet {
|
|
39
|
+
_internalBodyLabel.applyStyle(bodyViewStyleProps)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
@objc var bodyView: NSNumber?
|
|
43
|
+
@objc var callToActionViewStyleProps: NSDictionary? {
|
|
44
|
+
didSet {
|
|
45
|
+
_internalFakeCTAButton.applyStyle(callToActionViewStyleProps)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
@objc var callToActionView: NSNumber?
|
|
49
|
+
@objc var iconViewStyleProps: NSDictionary? {
|
|
50
|
+
didSet {
|
|
51
|
+
_internalIconImageView.applyStyle(iconViewStyleProps)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
@objc var iconView: NSNumber?
|
|
55
|
+
@objc var mediaViewStyleProps: NSDictionary? {
|
|
56
|
+
didSet {
|
|
57
|
+
_internalMediaView.baseApplyStyle(mediaViewStyleProps)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
@objc var mediaView: NSNumber?
|
|
61
|
+
|
|
62
|
+
var _internalTitleLabel: UILabel = {
|
|
63
|
+
let label = UILabel()
|
|
64
|
+
label.isUserInteractionEnabled = false
|
|
65
|
+
label.clipsToBounds = true
|
|
66
|
+
label.font = .systemFont(ofSize: 15, weight: .bold)
|
|
67
|
+
label.textColor = UIColor.black
|
|
68
|
+
return label
|
|
69
|
+
}()
|
|
70
|
+
|
|
71
|
+
var _internalBodyLabel: UILabel = {
|
|
72
|
+
let label = UILabel()
|
|
73
|
+
label.isUserInteractionEnabled = false
|
|
74
|
+
label.clipsToBounds = true
|
|
75
|
+
label.font = .systemFont(ofSize: 15, weight: .regular)
|
|
76
|
+
label.textColor = UIColor.black
|
|
77
|
+
return label
|
|
78
|
+
}()
|
|
79
|
+
|
|
80
|
+
let _internalMediaView: UIView = UIView()
|
|
81
|
+
|
|
82
|
+
var _internalIconImageView: UIImageView = {
|
|
83
|
+
let view = UIImageView()
|
|
84
|
+
view.contentMode = .scaleAspectFill
|
|
85
|
+
return view
|
|
86
|
+
}()
|
|
87
|
+
|
|
88
|
+
/// Call to Action
|
|
89
|
+
var _internalCallToActionButton: UIButton = {
|
|
90
|
+
let button = UIButton()
|
|
91
|
+
button.translatesAutoresizingMaskIntoConstraints = false
|
|
92
|
+
button.titleLabel?.font = .systemFont(ofSize: 20, weight: .bold)
|
|
93
|
+
button.setTitleColor(.white, for: .normal)
|
|
94
|
+
return button
|
|
95
|
+
}()
|
|
96
|
+
|
|
97
|
+
var _internalFakeCTAButton: UIButton = {
|
|
98
|
+
let button = UIButton()
|
|
99
|
+
button.translatesAutoresizingMaskIntoConstraints = false
|
|
100
|
+
button.setTitleColor(.white, for: .normal)
|
|
101
|
+
return button
|
|
102
|
+
}()
|
|
103
|
+
|
|
104
|
+
@objc var onAdLoadedEvent: RCTDirectEventBlock?
|
|
105
|
+
@objc var onAdLoadFailedEvent: RCTDirectEventBlock?
|
|
106
|
+
@objc var onAdClickedEvent: RCTDirectEventBlock?
|
|
107
|
+
@objc var onAdImpressionRecordedEvent: RCTDirectEventBlock?
|
|
108
|
+
|
|
109
|
+
@Atomic private var isAdUnitIdSet: Bool = false
|
|
110
|
+
@Atomic private var isBindBridge: Bool = false
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
var bridge: RCTBridge?
|
|
114
|
+
|
|
115
|
+
convenience init(bridge: RCTBridge?) {
|
|
116
|
+
self.init()
|
|
117
|
+
self.bridge = bridge
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
required init() {
|
|
121
|
+
self.adUnit = DaroAdUnit(unitId: "")
|
|
122
|
+
super.init(frame: .zero)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
required init?(coder: NSCoder) {
|
|
126
|
+
fatalError("init(coder:) has not been implemented")
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/// Invoked after all the JavaScript properties are set when mounting AdView
|
|
130
|
+
/// after all the user's asset views are mounted, following the 1st event
|
|
131
|
+
/// 두 번 호출됨. 첫번째는 adUnitId가 설정된 후, 두번째는 모든 subview들이 마운트된 후
|
|
132
|
+
override func didSetProps(_ changedProps: [String]) {
|
|
133
|
+
guard let adUnitId else {
|
|
134
|
+
DaroMModule.logger.warning("[native-ad] AdUnitId is required")
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
guard changedProps.isEmpty == false else { return }
|
|
138
|
+
DaroMModule.logger.info("[native-ad] \(#function): \(changedProps)")
|
|
139
|
+
guard !isAdUnitIdSet else { return }
|
|
140
|
+
isAdUnitIdSet = true
|
|
141
|
+
makeAdViews(unitId: adUnitId)
|
|
142
|
+
self._internalAdView?.loadAd()
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
override func didMoveToWindow() {
|
|
146
|
+
super.didMoveToWindow()
|
|
147
|
+
|
|
148
|
+
guard window != nil else { return }
|
|
149
|
+
|
|
150
|
+
DispatchQueue.main.async { [weak self] in
|
|
151
|
+
self?.bindBridgeViews()
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
private func makeAdViews(unitId: String) {
|
|
156
|
+
self.adUnit = DaroAdUnit(unitId: unitId)
|
|
157
|
+
let native = BridgeNativeAdView(unit: adUnit)
|
|
158
|
+
native.delegate = self
|
|
159
|
+
self._internalAdView = native
|
|
160
|
+
super.addSubview(native)
|
|
161
|
+
native.pinToEdges(to: self)
|
|
162
|
+
|
|
163
|
+
self._internalAdView?.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
|
|
164
|
+
// print("[QWER] onSuccess \(ad) \(adInfo)")
|
|
165
|
+
self?.onAdLoadedEvent?(adInfo?.toBody)
|
|
166
|
+
}
|
|
167
|
+
self._internalAdView?.listener.onAdLoadFail = { [weak self] error in
|
|
168
|
+
// print("[QWER] onFailure \(error)")
|
|
169
|
+
self?.onAdLoadFailedEvent?(error.toBody)
|
|
170
|
+
}
|
|
171
|
+
self._internalAdView?.listener.onAdImpression = { [weak self] adInfo in
|
|
172
|
+
// print("[QWER] adImpression\(adInfo)")
|
|
173
|
+
self?.onAdImpressionRecordedEvent?(adInfo?.toBody)
|
|
174
|
+
}
|
|
175
|
+
self._internalAdView?.listener.onAdClicked = { [weak self] adInfo in
|
|
176
|
+
// print("[QWER] adClicked \(adInfo)")
|
|
177
|
+
self?.onAdClickedEvent?(adInfo?.toBody)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
private func getBridgeView(tag: NSNumber?) -> UIView? {
|
|
182
|
+
guard let tag, let bridgeView = bridge?.uiManager.view(forReactTag: tag) else {
|
|
183
|
+
return nil
|
|
184
|
+
}
|
|
185
|
+
return bridgeView
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private func bindBridgeViews() {
|
|
189
|
+
guard !isBindBridge else { return }
|
|
190
|
+
isBindBridge = true
|
|
191
|
+
var bindTitleLabel: UILabel?
|
|
192
|
+
if let bridgeTitleView = getBridgeView(tag: titleView) {
|
|
193
|
+
_internalTitleLabel.pinToEdges(to: bridgeTitleView)
|
|
194
|
+
bindTitleLabel = _internalTitleLabel
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
var bindBodyLabel: UILabel?
|
|
198
|
+
if let bridgeBodyView = getBridgeView(tag: bodyView) {
|
|
199
|
+
_internalBodyLabel.pinToEdges(to: bridgeBodyView)
|
|
200
|
+
bindBodyLabel = _internalBodyLabel
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if let bridgeCallToActionView = getBridgeView(tag: callToActionView) {
|
|
204
|
+
_internalFakeCTAButton.pinToEdges(to: bridgeCallToActionView)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
var bindIconImageView: UIImageView?
|
|
208
|
+
if let bridgeIconView = getBridgeView(tag: iconView) {
|
|
209
|
+
_internalIconImageView.pinToEdges(to: bridgeIconView)
|
|
210
|
+
bindIconImageView = _internalIconImageView
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
var bindMediaView: UIView?
|
|
214
|
+
if let bridgeMediaView = getBridgeView(tag: mediaView) {
|
|
215
|
+
_internalMediaView.pinToEdges(to: bridgeMediaView)
|
|
216
|
+
bindMediaView = _internalMediaView
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
_internalCallToActionButton.pinToEdges(to: self)
|
|
220
|
+
|
|
221
|
+
_internalAdView?.bindViews(
|
|
222
|
+
titleLabel: bindTitleLabel,
|
|
223
|
+
bodyLabel: bindBodyLabel,
|
|
224
|
+
iconImageView: bindIconImageView,
|
|
225
|
+
mediaContentView: bindMediaView,
|
|
226
|
+
callToActionButton: _internalCallToActionButton
|
|
227
|
+
)
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
func renderAd(for nativeAd: DaroAdNative) {
|
|
231
|
+
self._internalFakeCTAButton.setTitle(_internalCallToActionButton.titleLabel?.text, for: .normal)
|
|
232
|
+
self._internalCallToActionButton.setTitle("", for: .normal)
|
|
233
|
+
self._internalCallToActionButton.alpha = 1
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
override func addSubview(_ view: UIView) {
|
|
237
|
+
self._internalAdView?.addSubview(view)
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
protocol RenderDelegate: AnyObject {
|
|
242
|
+
func renderAd(for nativeAd: DaroAdNative)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
class BridgeNativeAdView: DaroAdNativeView {
|
|
246
|
+
weak var delegate: RenderDelegate?
|
|
247
|
+
|
|
248
|
+
override func renderAd(for nativeAd: DaroAdNative, loader: any AdNativeLoadable) {
|
|
249
|
+
super.renderAd(for: nativeAd, loader: loader)
|
|
250
|
+
self.delegate?.renderAd(for: nativeAd)
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
@propertyWrapper
|
|
255
|
+
private struct Atomic<Value> {
|
|
256
|
+
private var value: Value
|
|
257
|
+
private let lock = NSLock()
|
|
258
|
+
|
|
259
|
+
init(wrappedValue value: Value) {
|
|
260
|
+
self.value = value
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
var wrappedValue: Value {
|
|
264
|
+
get {
|
|
265
|
+
lock.lock()
|
|
266
|
+
defer { lock.unlock() }
|
|
267
|
+
return value
|
|
268
|
+
}
|
|
269
|
+
set {
|
|
270
|
+
lock.lock()
|
|
271
|
+
value = newValue
|
|
272
|
+
lock.unlock()
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
private extension UIView {
|
|
278
|
+
func pinToEdges(to: UIView) {
|
|
279
|
+
translatesAutoresizingMaskIntoConstraints = false
|
|
280
|
+
if self.superview != to {
|
|
281
|
+
removeFromSuperview()
|
|
282
|
+
to.addSubview(self)
|
|
283
|
+
}
|
|
284
|
+
NSLayoutConstraint.activate([
|
|
285
|
+
topAnchor.constraint(equalTo: to.topAnchor),
|
|
286
|
+
bottomAnchor.constraint(equalTo: to.bottomAnchor),
|
|
287
|
+
leftAnchor.constraint(equalTo: to.leftAnchor),
|
|
288
|
+
rightAnchor.constraint(equalTo: to.rightAnchor),
|
|
289
|
+
])
|
|
290
|
+
}
|
|
291
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AdFormat = exports.AdBannerView = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
const {
|
|
11
|
+
DaroMModule
|
|
12
|
+
} = _reactNative.NativeModules;
|
|
13
|
+
const {
|
|
14
|
+
BANNER_AD_FORMAT_LABEL,
|
|
15
|
+
MREC_AD_FORMAT_LABEL
|
|
16
|
+
} = DaroMModule.getConstants();
|
|
17
|
+
let AdFormat = exports.AdFormat = /*#__PURE__*/function (AdFormat) {
|
|
18
|
+
AdFormat[AdFormat["BANNER"] = BANNER_AD_FORMAT_LABEL] = "BANNER";
|
|
19
|
+
AdFormat[AdFormat["MREC"] = MREC_AD_FORMAT_LABEL] = "MREC";
|
|
20
|
+
return AdFormat;
|
|
21
|
+
}({});
|
|
22
|
+
const ComponentName = 'DaroMAdBannerView';
|
|
23
|
+
const AdViewComponent = (0, _reactNative.requireNativeComponent)(ComponentName);
|
|
24
|
+
const ADVIEW_SIZE = {
|
|
25
|
+
banner: {
|
|
26
|
+
width: 320,
|
|
27
|
+
height: 50
|
|
28
|
+
},
|
|
29
|
+
mrec: {
|
|
30
|
+
width: 300,
|
|
31
|
+
height: 250
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const AdBannerView = exports.AdBannerView = /*#__PURE__*/(0, _react.forwardRef)(function AdBannerView({
|
|
35
|
+
adUnitId,
|
|
36
|
+
adFormat,
|
|
37
|
+
placement,
|
|
38
|
+
loadOnMount = true,
|
|
39
|
+
onAdLoaded,
|
|
40
|
+
onAdLoadFailed,
|
|
41
|
+
onAdClicked,
|
|
42
|
+
onAdImpressionRecorded,
|
|
43
|
+
style,
|
|
44
|
+
...otherProps
|
|
45
|
+
}, ref) {
|
|
46
|
+
const adFormatSize = (0, _react.useRef)({});
|
|
47
|
+
const adViewRef = (0, _react.useRef)(null);
|
|
48
|
+
const [isInitialized, setIsInitialized] = (0, _react.useState)(false);
|
|
49
|
+
const loadAd = (0, _react.useCallback)(() => {
|
|
50
|
+
if (adViewRef.current) {
|
|
51
|
+
_reactNative.UIManager.dispatchViewManagerCommand((0, _reactNative.findNodeHandle)(adViewRef.current),
|
|
52
|
+
// @ts-ignore: Issue in RN ts defs
|
|
53
|
+
_reactNative.UIManager.getViewManagerConfig(ComponentName).Commands.loadAd, []);
|
|
54
|
+
}
|
|
55
|
+
}, []);
|
|
56
|
+
(0, _react.useImperativeHandle)(ref, () => ({
|
|
57
|
+
loadAd
|
|
58
|
+
}), [loadAd]);
|
|
59
|
+
const saveElement = (0, _react.useCallback)(element => {
|
|
60
|
+
adViewRef.current = element;
|
|
61
|
+
}, []);
|
|
62
|
+
(0, _react.useEffect)(() => {
|
|
63
|
+
(async () => {
|
|
64
|
+
if (adFormat === AdFormat.BANNER) {
|
|
65
|
+
adFormatSize.current = {
|
|
66
|
+
width: ADVIEW_SIZE.banner.width,
|
|
67
|
+
height: ADVIEW_SIZE.banner.height
|
|
68
|
+
};
|
|
69
|
+
} else {
|
|
70
|
+
adFormatSize.current = {
|
|
71
|
+
width: ADVIEW_SIZE.mrec.width,
|
|
72
|
+
height: ADVIEW_SIZE.mrec.height
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const initialized = await DaroMModule.isInitialized();
|
|
76
|
+
setIsInitialized(initialized);
|
|
77
|
+
if (!initialized) {
|
|
78
|
+
console.warn('AdBannerView is mounted before the initialization of the DaroM React Native module');
|
|
79
|
+
}
|
|
80
|
+
})();
|
|
81
|
+
}, [adFormat]);
|
|
82
|
+
const onAdLoadedEvent = (0, _react.useCallback)(event => {
|
|
83
|
+
onAdLoaded?.(event.nativeEvent);
|
|
84
|
+
}, [onAdLoaded]);
|
|
85
|
+
const onAdLoadFailedEvent = (0, _react.useCallback)(event => {
|
|
86
|
+
onAdLoadFailed?.(event.nativeEvent);
|
|
87
|
+
}, [onAdLoadFailed]);
|
|
88
|
+
const onAdClickedEvent = (0, _react.useCallback)(event => {
|
|
89
|
+
onAdClicked?.(event.nativeEvent);
|
|
90
|
+
}, [onAdClicked]);
|
|
91
|
+
const onAdImpressionRecordedEvent = (0, _react.useCallback)(event => {
|
|
92
|
+
onAdImpressionRecorded?.(event.nativeEvent);
|
|
93
|
+
}, [onAdImpressionRecorded]);
|
|
94
|
+
if (!isInitialized) {
|
|
95
|
+
// Early return if not initialized
|
|
96
|
+
console.log('AdBannerView is not initialized');
|
|
97
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
98
|
+
style: style,
|
|
99
|
+
...otherProps
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AdViewComponent, {
|
|
103
|
+
style: style,
|
|
104
|
+
adFormat: adFormat,
|
|
105
|
+
ref: saveElement,
|
|
106
|
+
adUnitId: adUnitId,
|
|
107
|
+
placement: placement,
|
|
108
|
+
onAdLoadedEvent: onAdLoadedEvent,
|
|
109
|
+
onAdLoadFailedEvent: onAdLoadFailedEvent,
|
|
110
|
+
onAdClickedEvent: onAdClickedEvent,
|
|
111
|
+
onAdImpressionRecordedEvent: onAdImpressionRecordedEvent,
|
|
112
|
+
...otherProps
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=AdBannerView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_jsxRuntime","DaroMModule","NativeModules","BANNER_AD_FORMAT_LABEL","MREC_AD_FORMAT_LABEL","getConstants","AdFormat","exports","ComponentName","AdViewComponent","requireNativeComponent","ADVIEW_SIZE","banner","width","height","mrec","AdBannerView","forwardRef","adUnitId","adFormat","placement","loadOnMount","onAdLoaded","onAdLoadFailed","onAdClicked","onAdImpressionRecorded","style","otherProps","ref","adFormatSize","useRef","adViewRef","isInitialized","setIsInitialized","useState","loadAd","useCallback","current","UIManager","dispatchViewManagerCommand","findNodeHandle","getViewManagerConfig","Commands","useImperativeHandle","saveElement","element","useEffect","BANNER","initialized","console","warn","onAdLoadedEvent","event","nativeEvent","onAdLoadFailedEvent","onAdClickedEvent","onAdImpressionRecordedEvent","log","jsx","View"],"sourceRoot":"../../src","sources":["AdBannerView.tsx"],"mappings":"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","ignoreList":[]}
|