react-native-daro 1.0.13 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +30 -30
- package/android/build.gradle +52 -59
- package/android/src/admob/java/com/daro/reactnative/DaroSdkBridge.kt +23 -0
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/java/com/{darom → daro/reactnative}/DaroMAdBannerViewManager.kt +38 -15
- package/android/src/main/java/com/daro/reactnative/DaroMAdNativeViewManager.kt +167 -0
- package/android/src/main/java/com/daro/reactnative/DaroMModule.kt +257 -0
- package/android/src/main/java/com/daro/reactnative/DaroMPackage.kt +45 -0
- package/android/src/main/java/com/daro/reactnative/DaroMediaViewManager.kt +25 -0
- package/android/src/main/java/com/{darom → daro/reactnative}/constants/InternalDaroMBannerSize.kt +1 -1
- package/android/src/main/java/com/{darom → daro/reactnative}/event/DaroMEvent.kt +19 -8
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMBannerViewModuleImpl.kt +2 -2
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMInterstitialModuleImpl.kt +26 -26
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMLightPopupModuleImpl.kt +30 -29
- package/android/src/main/java/com/{darom → daro/reactnative}/impl/DaroMRewardedAdModuleImpl.kt +27 -27
- package/android/src/main/java/com/{darom → daro/reactnative}/util/AdInfoUtil.kt +25 -1
- package/android/src/main/java/com/daro/reactnative/util/EventEmitterUtil.kt +37 -0
- package/android/src/main/java/com/daro/reactnative/view/DaroMAdBannerViewContainer.kt +417 -0
- package/android/src/main/java/com/daro/reactnative/view/DaroMAdNativeViewContainer.kt +624 -0
- package/android/src/main/java/com/daro/reactnative/view/DaroMediaView.kt +123 -0
- package/android/src/newarch/java/com/daro/reactnative/DaroMModuleSpec.kt +6 -0
- package/android/src/oldarch/java/com/daro/reactnative/DaroMModuleSpec.kt +90 -0
- package/app.plugin.js +1 -0
- package/ios/DaroMModule+AppOpen.swift +38 -32
- package/ios/DaroMModule+Interstitial.swift +32 -26
- package/ios/DaroMModule+LightPopup.swift +43 -33
- package/ios/DaroMModule+Rewarded.swift +38 -27
- package/ios/DaroMModule.mm +45 -17
- package/ios/DaroMModule.swift +24 -17
- package/ios/Fabric/DaroMAdBannerComponentView.mm +207 -0
- package/ios/Fabric/DaroMFabricEventSink.mm +31 -0
- package/ios/Fabric/DaroMFabricPropApplier.mm +123 -0
- package/ios/Fabric/DaroMNativeAdComponentView.mm +294 -0
- package/ios/{DaroMAdBannerViewManager.m → Paper/DaroMAdBannerViewManager.m} +3 -1
- package/ios/Paper/DaroMAdBannerViewManager.swift +21 -0
- package/ios/{DaroMNativeAdViewManager.m → Paper/DaroMNativeAdViewManager.m} +2 -1
- package/ios/Paper/DaroMNativeAdViewManager.swift +22 -0
- package/ios/Shared/DaroMAdEventSink.swift +24 -0
- package/ios/Shared/DaroMBannerAdView.swift +188 -0
- package/ios/Shared/DaroMNativeAdLoadCoordinator.swift +49 -0
- package/ios/Shared/DaroMNativeAdView.swift +575 -0
- package/ios/Shared/DaroMNativeAssetResolver.swift +53 -0
- package/ios/mediation/admob/DaroMediationDebugger.swift +11 -0
- package/ios/mediation/admob/DaroMediationTypes.swift +23 -0
- package/lib/commonjs/AdBannerView.js +21 -35
- package/lib/commonjs/AdBannerView.js.map +1 -1
- package/lib/commonjs/AppOpenAd.js +80 -21
- package/lib/commonjs/AppOpenAd.js.map +1 -1
- package/lib/commonjs/DaroMAdBannerViewNativeComponent.ts +47 -0
- package/lib/commonjs/DaroMNativeAdViewNativeComponent.ts +62 -0
- package/lib/commonjs/DaroMediaViewNativeComponent.ts +9 -0
- package/lib/commonjs/ErrorCode.js.map +1 -1
- package/lib/commonjs/EventEmitter.js +4 -5
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/InterstitialAd.js +48 -22
- package/lib/commonjs/InterstitialAd.js.map +1 -1
- package/lib/commonjs/LightPopupAd.js +64 -46
- package/lib/commonjs/LightPopupAd.js.map +1 -1
- package/lib/commonjs/NativeDaroModule.js +9 -0
- package/lib/commonjs/NativeDaroModule.js.map +1 -0
- package/lib/commonjs/RewardedAd.js +47 -23
- package/lib/commonjs/RewardedAd.js.map +1 -1
- package/lib/commonjs/codegen-env.d.js +2 -0
- package/lib/commonjs/codegen-env.d.js.map +1 -0
- package/lib/commonjs/hooks/useInterstitialAd.js +110 -0
- package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
- package/lib/commonjs/hooks/useLightPopupAd.js +114 -0
- package/lib/commonjs/hooks/useLightPopupAd.js.map +1 -0
- package/lib/commonjs/hooks/useRewardedAd.js +113 -0
- package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
- package/lib/commonjs/index.js +29 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdView.js +23 -18
- package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js +43 -31
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js +34 -7
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/module/AdBannerView.js +20 -36
- package/lib/module/AdBannerView.js.map +1 -1
- package/lib/module/AppOpenAd.js +80 -22
- package/lib/module/AppOpenAd.js.map +1 -1
- package/lib/module/DaroMAdBannerViewNativeComponent.ts +47 -0
- package/lib/module/DaroMNativeAdViewNativeComponent.ts +62 -0
- package/lib/module/DaroMediaViewNativeComponent.ts +9 -0
- package/lib/module/ErrorCode.js.map +1 -1
- package/lib/module/EventEmitter.js +4 -6
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/InterstitialAd.js +47 -22
- package/lib/module/InterstitialAd.js.map +1 -1
- package/lib/module/LightPopupAd.js +65 -47
- package/lib/module/LightPopupAd.js.map +1 -1
- package/lib/module/NativeDaroModule.js +5 -0
- package/lib/module/NativeDaroModule.js.map +1 -0
- package/lib/module/RewardedAd.js +46 -23
- package/lib/module/RewardedAd.js.map +1 -1
- package/lib/module/codegen-env.d.js +2 -0
- package/lib/module/codegen-env.d.js.map +1 -0
- package/lib/module/hooks/useInterstitialAd.js +106 -0
- package/lib/module/hooks/useInterstitialAd.js.map +1 -0
- package/lib/module/hooks/useLightPopupAd.js +110 -0
- package/lib/module/hooks/useLightPopupAd.js.map +1 -0
- package/lib/module/hooks/useRewardedAd.js +109 -0
- package/lib/module/hooks/useRewardedAd.js.map +1 -0
- package/lib/module/index.js +7 -13
- package/lib/module/index.js.map +1 -1
- package/lib/module/nativeAd/NativeAdView.js +22 -19
- package/lib/module/nativeAd/NativeAdView.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewComponents.js +45 -34
- package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewProvider.js +35 -8
- package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/typescript/commonjs/plugin/src/index.d.ts +19 -0
- package/lib/typescript/commonjs/plugin/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts +6 -0
- package/lib/typescript/commonjs/plugin/src/skAdNetworkIds.d.ts.map +1 -0
- package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts +8 -0
- package/lib/typescript/commonjs/plugin/src/withAndroid.d.ts.map +1 -0
- package/lib/typescript/commonjs/plugin/src/withIos.d.ts +8 -0
- package/lib/typescript/commonjs/plugin/src/withIos.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/AdBannerView.d.ts +126 -4
- package/lib/typescript/commonjs/src/AdBannerView.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DaroMAdBannerViewNativeComponent.d.ts +32 -0
- package/lib/typescript/commonjs/src/DaroMAdBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/DaroMNativeAdViewNativeComponent.d.ts +42 -0
- package/lib/typescript/commonjs/src/DaroMNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts +6 -0
- package/lib/typescript/commonjs/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ErrorCode.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/NativeDaroModule.d.ts +61 -0
- package/lib/typescript/commonjs/src/NativeDaroModule.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/RewardedAd.d.ts +6 -0
- package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts +19 -0
- package/lib/typescript/commonjs/src/hooks/useInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts +23 -0
- package/lib/typescript/commonjs/src/hooks/useLightPopupAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts +20 -0
- package/lib/typescript/commonjs/src/hooks/useRewardedAd.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +7 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts +125 -2
- package/lib/typescript/commonjs/src/nativeAd/NativeAdView.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
- package/lib/typescript/commonjs/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts +2 -2
- package/lib/typescript/commonjs/src/types/AdBannerViewProps.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdProps.d.ts +2 -2
- package/lib/typescript/commonjs/src/types/AdProps.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/DaroMMobileAds.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts +2 -0
- package/lib/typescript/commonjs/src/types/NativeAdViewProps.d.ts.map +1 -1
- package/lib/typescript/module/plugin/src/index.d.ts +19 -0
- package/lib/typescript/module/plugin/src/index.d.ts.map +1 -0
- package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts +6 -0
- package/lib/typescript/module/plugin/src/skAdNetworkIds.d.ts.map +1 -0
- package/lib/typescript/module/plugin/src/withAndroid.d.ts +8 -0
- package/lib/typescript/module/plugin/src/withAndroid.d.ts.map +1 -0
- package/lib/typescript/module/plugin/src/withIos.d.ts +8 -0
- package/lib/typescript/module/plugin/src/withIos.d.ts.map +1 -0
- package/lib/typescript/module/src/AdBannerView.d.ts +126 -4
- package/lib/typescript/module/src/AdBannerView.d.ts.map +1 -1
- package/lib/typescript/module/src/AppOpenAd.d.ts +6 -0
- package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/module/src/DaroMAdBannerViewNativeComponent.d.ts +32 -0
- package/lib/typescript/module/src/DaroMAdBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/DaroMNativeAdViewNativeComponent.d.ts +42 -0
- package/lib/typescript/module/src/DaroMNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts +6 -0
- package/lib/typescript/module/src/DaroMediaViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ErrorCode.d.ts.map +1 -1
- package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/module/src/InterstitialAd.d.ts +6 -0
- package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/module/src/LightPopupAd.d.ts +6 -0
- package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/module/src/NativeDaroModule.d.ts +61 -0
- package/lib/typescript/module/src/NativeDaroModule.d.ts.map +1 -0
- package/lib/typescript/module/src/RewardedAd.d.ts +6 -0
- package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts +19 -0
- package/lib/typescript/module/src/hooks/useInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts +23 -0
- package/lib/typescript/module/src/hooks/useLightPopupAd.d.ts.map +1 -0
- package/lib/typescript/module/src/hooks/useRewardedAd.d.ts +20 -0
- package/lib/typescript/module/src/hooks/useRewardedAd.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +7 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts +125 -2
- package/lib/typescript/module/src/nativeAd/NativeAdView.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
- package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts +11 -5
- package/lib/typescript/module/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdBannerViewProps.d.ts +2 -2
- package/lib/typescript/module/src/types/AdBannerViewProps.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdProps.d.ts +2 -2
- package/lib/typescript/module/src/types/AdProps.d.ts.map +1 -1
- package/lib/typescript/module/src/types/DaroMMobileAds.d.ts.map +1 -1
- package/lib/typescript/module/src/types/NativeAdViewProps.d.ts +2 -0
- package/lib/typescript/module/src/types/NativeAdViewProps.d.ts.map +1 -1
- package/package.json +95 -105
- package/plugin/build/index.d.ts +18 -0
- package/plugin/build/index.js +71 -0
- package/plugin/build/skAdNetworkIds.d.ts +5 -0
- package/plugin/build/skAdNetworkIds.js +205 -0
- package/plugin/build/withAndroid.d.ts +7 -0
- package/plugin/build/withAndroid.js +222 -0
- package/plugin/build/withIos.d.ts +7 -0
- package/plugin/build/withIos.js +82 -0
- package/react-native-daro.podspec +28 -0
- package/src/AdBannerView.tsx +48 -48
- package/src/AppOpenAd.ts +101 -20
- package/src/DaroMAdBannerViewNativeComponent.ts +47 -0
- package/src/DaroMNativeAdViewNativeComponent.ts +62 -0
- package/src/DaroMediaViewNativeComponent.ts +9 -0
- package/src/ErrorCode.ts +1 -2
- package/src/EventEmitter.ts +9 -7
- package/src/InterstitialAd.ts +75 -21
- package/src/LightPopupAd.ts +90 -51
- package/src/NativeDaroModule.ts +91 -0
- package/src/RewardedAd.ts +72 -22
- package/src/codegen-env.d.ts +45 -0
- package/src/hooks/useInterstitialAd.ts +117 -0
- package/src/hooks/useLightPopupAd.ts +132 -0
- package/src/hooks/useRewardedAd.ts +122 -0
- package/src/index.tsx +21 -22
- package/src/nativeAd/NativeAdView.tsx +83 -45
- package/src/nativeAd/NativeAdViewComponents.tsx +129 -64
- package/src/nativeAd/NativeAdViewProvider.tsx +84 -16
- package/src/types/AdBannerViewProps.ts +11 -11
- package/src/types/AdInfo.ts +17 -17
- package/src/types/AdProps.ts +8 -9
- package/src/types/DaroMMobileAds.ts +3 -6
- package/src/types/NativeAdViewProps.ts +12 -5
- package/src/types/index.ts +1 -1
- package/android/gradle.properties +0 -5
- package/android/src/main/AndroidManifestNew.xml +0 -7
- package/android/src/main/java/com/darom/DaroMAdNativeViewManager.kt +0 -136
- package/android/src/main/java/com/darom/DaroMModule.kt +0 -203
- package/android/src/main/java/com/darom/DaroMPackage.kt +0 -21
- package/android/src/main/java/com/darom/util/EventEmitterUtil.kt +0 -24
- package/android/src/main/java/com/darom/view/DaroMAdBannerViewContainer.kt +0 -163
- package/android/src/main/java/com/darom/view/DaroMAdNativeViewContainer.kt +0 -375
- package/android/src/main/res/layout/layout_activity_transparent.xml +0 -7
- package/android/src/main/res/values/styles.xml +0 -11
- package/ios/DaroM-Bridging-Header.h +0 -6
- package/ios/DaroMAdBannerViewManager.swift +0 -91
- package/ios/DaroMNativeAdViewManager.swift +0 -291
- package/react-native-daro-m.podspec +0 -44
|
@@ -1,41 +1,46 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React
|
|
3
2
|
|
|
4
3
|
extension DaroMModule {
|
|
5
|
-
@objc(isRewardedAdReady
|
|
4
|
+
@objc(isRewardedAdReady:adUnitId:resolve:reject:)
|
|
6
5
|
func isRewardedAdReady(
|
|
7
|
-
|
|
6
|
+
requestId: Double,
|
|
7
|
+
adUnitId: String,
|
|
8
8
|
resolve: RCTPromiseResolveBlock,
|
|
9
9
|
reject: RCTPromiseRejectBlock
|
|
10
10
|
) {
|
|
11
|
+
let requestId = Int(requestId)
|
|
11
12
|
if !Self.sdkInitialized {
|
|
12
13
|
DaroMModule.logger.debug("[DaroMMobileAds] !isInitialized")
|
|
13
14
|
resolve(false)
|
|
14
15
|
return
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
resolve(rewardedAds[
|
|
18
|
+
resolve(rewardedAds[requestId]?.loadedAd != nil)
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
@objc(loadRewardedAd
|
|
21
|
+
@objc(loadRewardedAd:adUnitId:resolve:reject:)
|
|
21
22
|
func loadRewardedAd(
|
|
22
|
-
|
|
23
|
+
requestId: Double,
|
|
24
|
+
adUnitId: String,
|
|
23
25
|
resolve: RCTPromiseResolveBlock,
|
|
24
26
|
reject: RCTPromiseRejectBlock
|
|
25
27
|
) {
|
|
26
|
-
let
|
|
28
|
+
let requestId = Int(requestId)
|
|
29
|
+
let rewardedLoader = retrieveRewardedLoader(requestId: requestId, adUnitId: adUnitId)
|
|
27
30
|
rewardedLoader.loadAd()
|
|
28
31
|
resolve(Void())
|
|
29
32
|
}
|
|
30
33
|
|
|
31
|
-
@objc(showRewardedAd
|
|
34
|
+
@objc(showRewardedAd:adUnitId:customData:resolve:reject:)
|
|
32
35
|
func showRewardedAd(
|
|
33
|
-
|
|
36
|
+
requestId: Double,
|
|
37
|
+
adUnitId: String,
|
|
34
38
|
customData: String?,
|
|
35
39
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
36
40
|
reject: @escaping RCTPromiseRejectBlock
|
|
37
41
|
) {
|
|
38
|
-
|
|
42
|
+
let requestId = Int(requestId)
|
|
43
|
+
guard let loadedAd = rewardedAds[requestId]?.loadedAd else {
|
|
39
44
|
reject("REWARDED_AD_NOT_LOADED", "Rewarded ad not loaded", nil)
|
|
40
45
|
return
|
|
41
46
|
}
|
|
@@ -52,57 +57,57 @@ extension DaroMModule {
|
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
|
|
55
|
-
func retrieveRewardedLoader(
|
|
56
|
-
if let rewardedAd = rewardedAds[
|
|
60
|
+
func retrieveRewardedLoader(requestId: Int, adUnitId: String) -> DaroRewardedAdLoader {
|
|
61
|
+
if let rewardedAd = rewardedAds[requestId] {
|
|
57
62
|
return rewardedAd.loader
|
|
58
63
|
} else {
|
|
59
|
-
let rewardedAdLoader = DaroRewardedAdLoader(unit: DaroAdUnit(unitId:
|
|
64
|
+
let rewardedAdLoader = DaroRewardedAdLoader(unit: DaroAdUnit(unitId: adUnitId))
|
|
60
65
|
rewardedAdLoader.listener.onAdClicked = { [weak self] adInfo in
|
|
61
66
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad clicked")
|
|
62
|
-
self?.sendEvent(with: .onRewardedAdClickedEvent, body: adInfo?.toBody)
|
|
67
|
+
self?.sendEvent(with: .onRewardedAdClickedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
63
68
|
}
|
|
64
69
|
|
|
65
70
|
rewardedAdLoader.listener.onAdImpression = { [weak self] adInfo in
|
|
66
71
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad impression")
|
|
67
|
-
self?.rewardedAds[
|
|
68
|
-
self?.sendEvent(with: .onRewardedAdImpressionRecordedEvent, body: adInfo?.toBody)
|
|
72
|
+
self?.rewardedAds[requestId]?.loadedAd = nil
|
|
73
|
+
self?.sendEvent(with: .onRewardedAdImpressionRecordedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
69
74
|
}
|
|
70
75
|
|
|
71
76
|
rewardedAdLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
|
|
72
77
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad loaded")
|
|
73
|
-
self?.rewardedAds[
|
|
74
|
-
self?.sendEvent(with: .onRewardedAdLoadedEvent, body: adInfo?.toBody)
|
|
75
|
-
self?.setupRewardedListener(for: ad)
|
|
78
|
+
self?.rewardedAds[requestId]?.loadedAd = ad
|
|
79
|
+
self?.sendEvent(with: .onRewardedAdLoadedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
80
|
+
self?.setupRewardedListener(for: ad, requestId: requestId)
|
|
76
81
|
}
|
|
77
82
|
|
|
78
83
|
rewardedAdLoader.listener.onAdLoadFail = { [weak self] error in
|
|
79
84
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad failed to load: \(error)")
|
|
80
|
-
self?.sendEvent(with: .onRewardedAdLoadFailedEvent, body: error.toBody)
|
|
85
|
+
self?.sendEvent(with: .onRewardedAdLoadFailedEvent, body: error.toBody(requestId: requestId))
|
|
81
86
|
}
|
|
82
|
-
self.rewardedAds[
|
|
87
|
+
self.rewardedAds[requestId] = RewardedAd(loader: rewardedAdLoader)
|
|
83
88
|
return rewardedAdLoader
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
private func setupRewardedListener(for ad: DaroRewardedAd) {
|
|
92
|
+
private func setupRewardedListener(for ad: DaroRewardedAd, requestId: Int) {
|
|
88
93
|
ad.rewardedAdListener.onShown = { [weak self] adInfo in
|
|
89
94
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad displayed")
|
|
90
|
-
self?.sendEvent(with: .onRewardedAdDisplayedEvent, body: adInfo?.toBody)
|
|
95
|
+
self?.sendEvent(with: .onRewardedAdDisplayedEvent, body: adInfo?.toBody(requestId: requestId))
|
|
91
96
|
}
|
|
92
97
|
|
|
93
98
|
ad.rewardedAdListener.onDismiss = { [weak self] adInfo in
|
|
94
99
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad hidden")
|
|
95
|
-
self?.sendEvent(with: .onRewardedAdHiddenEvent, body: adInfo?.toBody)
|
|
100
|
+
self?.sendEvent(with: .onRewardedAdHiddenEvent, body: adInfo?.toBody(requestId: requestId))
|
|
96
101
|
}
|
|
97
102
|
|
|
98
103
|
ad.rewardedAdListener.onFailedToShow = { [weak self] adInfo, error in
|
|
99
104
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad failed to display: \(error)")
|
|
100
|
-
self?.sendEvent(with: .onRewardedAdFailedToDisplayEvent, body: adInfo?.toBody)
|
|
105
|
+
self?.sendEvent(with: .onRewardedAdFailedToDisplayEvent, body: adInfo?.toBody(requestId: requestId))
|
|
101
106
|
}
|
|
102
107
|
|
|
103
108
|
ad.rewardedAdListener.onEarnedReward = { [weak self] adInfo, rewardItem in
|
|
104
109
|
DaroMModule.logger.debug("[DARO] Sample Rewarded Ad received reward")
|
|
105
|
-
self?.sendEvent(with: .onRewardedAdReceivedRewardEvent, body: rewardItem?.toBody(unitId: adInfo?.adUnitId ?? ""))
|
|
110
|
+
self?.sendEvent(with: .onRewardedAdReceivedRewardEvent, body: rewardItem?.toBody(requestId: requestId, unitId: adInfo?.adUnitId ?? ""))
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
113
|
}
|
|
@@ -115,4 +120,10 @@ private extension DaroRewardedItem {
|
|
|
115
120
|
"rewardAmount": self.amount,
|
|
116
121
|
]
|
|
117
122
|
}
|
|
123
|
+
|
|
124
|
+
func toBody(requestId: Int, unitId: String) -> [String: Any] {
|
|
125
|
+
var body = self.toBody(unitId: unitId)
|
|
126
|
+
body["requestId"] = requestId
|
|
127
|
+
return body
|
|
128
|
+
}
|
|
118
129
|
}
|
package/ios/DaroMModule.mm
CHANGED
|
@@ -1,45 +1,73 @@
|
|
|
1
1
|
#import <React/RCTBridgeModule.h>
|
|
2
2
|
#import <React/RCTEventEmitter.h>
|
|
3
3
|
|
|
4
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
5
|
+
#import <DaroReactNativeSpec/DaroReactNativeSpec.h>
|
|
6
|
+
#endif
|
|
7
|
+
|
|
4
8
|
@interface RCT_EXTERN_MODULE (DaroMModule, RCTEventEmitter)
|
|
5
9
|
|
|
6
10
|
#pragma mark - Initialization
|
|
7
11
|
|
|
8
|
-
RCT_EXTERN_METHOD(isInitialized
|
|
9
|
-
RCT_EXTERN_METHOD(initializeSdk
|
|
10
|
-
RCT_EXTERN_METHOD(setUserId
|
|
12
|
+
RCT_EXTERN_METHOD(isInitialized:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
13
|
+
RCT_EXTERN_METHOD(initializeSdk:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
14
|
+
RCT_EXTERN_METHOD(setUserId:(NSString *)userId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
11
15
|
|
|
12
16
|
#pragma mark - Mediation Debugger
|
|
13
17
|
|
|
14
|
-
RCT_EXTERN_METHOD(showMediationDebugger
|
|
18
|
+
RCT_EXTERN_METHOD(showMediationDebugger:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
15
19
|
|
|
16
20
|
#pragma mark - Interstitial
|
|
17
21
|
|
|
18
|
-
RCT_EXTERN_METHOD(isInterstitialReady :
|
|
19
|
-
RCT_EXTERN_METHOD(loadInterstitial :
|
|
20
|
-
RCT_EXTERN_METHOD(showInterstitial :
|
|
22
|
+
RCT_EXTERN_METHOD(isInterstitialReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
23
|
+
RCT_EXTERN_METHOD(loadInterstitial:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
24
|
+
RCT_EXTERN_METHOD(showInterstitial:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
21
25
|
|
|
22
26
|
#pragma mark - Rewarded
|
|
23
27
|
|
|
24
|
-
RCT_EXTERN_METHOD(isRewardedAdReady :
|
|
25
|
-
RCT_EXTERN_METHOD(loadRewardedAd :
|
|
26
|
-
RCT_EXTERN_METHOD(showRewardedAd :
|
|
28
|
+
RCT_EXTERN_METHOD(isRewardedAdReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
29
|
+
RCT_EXTERN_METHOD(loadRewardedAd:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
30
|
+
RCT_EXTERN_METHOD(showRewardedAd:(double)requestId adUnitId:(NSString *)adUnitId customData:(nullable NSString *)customData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
27
31
|
|
|
28
32
|
#pragma mark - AppOpen Ad
|
|
29
33
|
|
|
30
|
-
RCT_EXTERN_METHOD(isAppOpenAdReady :
|
|
31
|
-
RCT_EXTERN_METHOD(loadAppOpenAd :
|
|
32
|
-
RCT_EXTERN_METHOD(showAppOpenAd : (NSString *)
|
|
34
|
+
RCT_EXTERN_METHOD(isAppOpenAdReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
35
|
+
RCT_EXTERN_METHOD(loadAppOpenAd:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
36
|
+
RCT_EXTERN_METHOD(showAppOpenAd:(double)requestId adUnitId:(NSString *)adUnitId placement:(nullable NSString *)placement customData:(nullable NSString *)customData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
33
37
|
|
|
34
38
|
#pragma mark - Light Popup
|
|
35
39
|
|
|
36
|
-
RCT_EXTERN_METHOD(isLightPopupReady :
|
|
37
|
-
RCT_EXTERN_METHOD(loadLightPopup :
|
|
38
|
-
RCT_EXTERN_METHOD(showLightPopup :
|
|
39
|
-
RCT_EXTERN_METHOD(setLightPopupAdConfiguration :
|
|
40
|
+
RCT_EXTERN_METHOD(isLightPopupReady:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
41
|
+
RCT_EXTERN_METHOD(loadLightPopup:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
42
|
+
RCT_EXTERN_METHOD(showLightPopup:(double)requestId adUnitId:(NSString *)adUnitId resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
43
|
+
RCT_EXTERN_METHOD(setLightPopupAdConfiguration:(double)requestId adUnitId:(NSString *)adUnitId configuration:(NSDictionary *)configuration resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
|
|
40
44
|
|
|
41
45
|
+ (BOOL)requiresMainQueueSetup {
|
|
42
46
|
return YES;
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
@end
|
|
50
|
+
|
|
51
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
52
|
+
|
|
53
|
+
@interface DaroMModule (TurboModule) <RCTTurboModule>
|
|
54
|
+
@end
|
|
55
|
+
|
|
56
|
+
@implementation DaroMModule (TurboModule)
|
|
57
|
+
|
|
58
|
+
- (facebook::react::ModuleConstants<JS::NativeDaroModule::Constants>)getConstants
|
|
59
|
+
{
|
|
60
|
+
NSDictionary *constants = [self constantsToExport] ?: @{};
|
|
61
|
+
return (facebook::react::ModuleConstants<JS::NativeDaroModule::Constants>)
|
|
62
|
+
[_RCTTypedModuleConstants newWithUnsafeDictionary:constants];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
66
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
67
|
+
{
|
|
68
|
+
return std::make_shared<facebook::react::NativeDaroModuleSpecJSI>(params);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@end
|
|
72
|
+
|
|
73
|
+
#endif
|
package/ios/DaroMModule.swift
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import Daro
|
|
1
|
+
import React
|
|
3
2
|
import os.log
|
|
4
3
|
|
|
5
4
|
@objc(DaroMModule)
|
|
@@ -83,20 +82,20 @@ class DaroMModule: RCTEventEmitter {
|
|
|
83
82
|
|
|
84
83
|
static var sdkInitialized: Bool = false
|
|
85
84
|
// 광고 인스턴스 저장소
|
|
86
|
-
internal var interstitials: [
|
|
87
|
-
internal var rewardedAds: [
|
|
88
|
-
internal var appOpenAds: [
|
|
89
|
-
internal var lightPopups: [
|
|
90
|
-
internal var lightPopupConfigurations: [
|
|
85
|
+
internal var interstitials: [Int: InterstitialAd] = [:]
|
|
86
|
+
internal var rewardedAds: [Int: RewardedAd] = [:]
|
|
87
|
+
internal var appOpenAds: [Int: AppOpenAd] = [:]
|
|
88
|
+
internal var lightPopups: [Int: LightPopupAd] = [:]
|
|
89
|
+
internal var lightPopupConfigurations: [Int: [String: Any]] = [:]
|
|
91
90
|
|
|
92
91
|
// MARK: - SDK 초기화 및 설정
|
|
93
92
|
|
|
94
|
-
@objc(isInitialized
|
|
93
|
+
@objc(isInitialized:reject:)
|
|
95
94
|
func isInitialized(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
96
95
|
resolve(Self.sdkInitialized)
|
|
97
96
|
}
|
|
98
97
|
|
|
99
|
-
@objc(initializeSdk
|
|
98
|
+
@objc(initializeSdk:reject:)
|
|
100
99
|
func initializeSdk(
|
|
101
100
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
102
101
|
reject: @escaping RCTPromiseRejectBlock
|
|
@@ -107,7 +106,7 @@ class DaroMModule: RCTEventEmitter {
|
|
|
107
106
|
resolve(Void())
|
|
108
107
|
return
|
|
109
108
|
}
|
|
110
|
-
|
|
109
|
+
|
|
111
110
|
// 초기화 진행
|
|
112
111
|
DaroAds.shared.logLevel = .debug
|
|
113
112
|
DaroAds.shared.initialized { error in
|
|
@@ -122,18 +121,14 @@ class DaroMModule: RCTEventEmitter {
|
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
|
|
125
|
-
@objc(showMediationDebugger
|
|
124
|
+
@objc(showMediationDebugger:reject:)
|
|
126
125
|
func showMediationDebugger(resolve: @escaping RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
127
|
-
|
|
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
|
-
}
|
|
126
|
+
DaroMediationDebugger.show {
|
|
132
127
|
resolve(Void())
|
|
133
128
|
}
|
|
134
129
|
}
|
|
135
130
|
|
|
136
|
-
@objc(setUserId
|
|
131
|
+
@objc(setUserId:resolve:reject:)
|
|
137
132
|
func setUserId(userId: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
|
|
138
133
|
DaroAds.shared.userId = userId
|
|
139
134
|
resolve(Void())
|
|
@@ -206,6 +201,12 @@ extension DaroAdInfo {
|
|
|
206
201
|
"latencyMillis": self.latency as Any,
|
|
207
202
|
]
|
|
208
203
|
}
|
|
204
|
+
|
|
205
|
+
func toBody(requestId: Int) -> [String: Any] {
|
|
206
|
+
var body = self.toBody
|
|
207
|
+
body["requestId"] = requestId
|
|
208
|
+
return body
|
|
209
|
+
}
|
|
209
210
|
}
|
|
210
211
|
|
|
211
212
|
extension DaroError {
|
|
@@ -215,4 +216,10 @@ extension DaroError {
|
|
|
215
216
|
"message": self.message,
|
|
216
217
|
]
|
|
217
218
|
}
|
|
219
|
+
|
|
220
|
+
func toBody(requestId: Int) -> [String: Any] {
|
|
221
|
+
var body = self.toBody
|
|
222
|
+
body["requestId"] = requestId
|
|
223
|
+
return body
|
|
224
|
+
}
|
|
218
225
|
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
#import <React/RCTDefines.h>
|
|
2
|
+
|
|
3
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
|
|
5
|
+
#import <React/RCTComponent.h>
|
|
6
|
+
#import <React/RCTFabricComponentsPlugins.h>
|
|
7
|
+
#import <React/RCTViewComponentView.h>
|
|
8
|
+
#import <react/renderer/components/DaroReactNativeSpec/ComponentDescriptors.h>
|
|
9
|
+
#import <react/renderer/components/DaroReactNativeSpec/EventEmitters.h>
|
|
10
|
+
#import <react/renderer/components/DaroReactNativeSpec/Props.h>
|
|
11
|
+
#import <react/renderer/components/DaroReactNativeSpec/RCTComponentViewHelpers.h>
|
|
12
|
+
#include <folly/dynamic.h>
|
|
13
|
+
#include <string>
|
|
14
|
+
|
|
15
|
+
using namespace facebook::react;
|
|
16
|
+
|
|
17
|
+
extern UIView *DaroMFabricCreateSwiftView(NSString *className);
|
|
18
|
+
extern void DaroMFabricSetValue(UIView *view, NSString *key, id value);
|
|
19
|
+
extern void DaroMFabricPerformSelector(UIView *view, SEL selector);
|
|
20
|
+
extern void DaroMFabricPerformSelectorWithObject(UIView *view, SEL selector, id object);
|
|
21
|
+
extern NSString *DaroMFabricNSStringFromStdString(const std::string &value);
|
|
22
|
+
extern NSDictionary *DaroMFabricEventBody(NSDictionary *body);
|
|
23
|
+
extern std::string DaroMFabricEventString(NSDictionary *body, NSString *key);
|
|
24
|
+
extern double DaroMFabricEventDouble(NSDictionary *body, NSString *key);
|
|
25
|
+
extern int DaroMFabricEventInt(NSDictionary *body, NSString *key);
|
|
26
|
+
|
|
27
|
+
@interface DaroMAdBannerViewComponentView : RCTViewComponentView <RCTDaroMAdBannerViewViewProtocol>
|
|
28
|
+
@end
|
|
29
|
+
|
|
30
|
+
@implementation DaroMAdBannerViewComponentView {
|
|
31
|
+
UIView *_bannerView;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
+ (void)load
|
|
35
|
+
{
|
|
36
|
+
[super load];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
- (instancetype)initWithFrame:(CGRect)frame
|
|
40
|
+
{
|
|
41
|
+
if (self = [super initWithFrame:frame]) {
|
|
42
|
+
static const auto defaultProps = std::make_shared<const DaroMAdBannerViewProps>();
|
|
43
|
+
_props = defaultProps;
|
|
44
|
+
[self createBannerView];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return self;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
- (void)createBannerView
|
|
51
|
+
{
|
|
52
|
+
_bannerView = DaroMFabricCreateSwiftView(@"DaroMAdBannerView");
|
|
53
|
+
self.contentView = _bannerView;
|
|
54
|
+
[self installEventHandlers];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
- (void)installEventHandlers
|
|
58
|
+
{
|
|
59
|
+
__weak DaroMAdBannerViewComponentView *weakSelf = self;
|
|
60
|
+
|
|
61
|
+
RCTDirectEventBlock onAdLoadedEvent = ^(NSDictionary *body) {
|
|
62
|
+
DaroMAdBannerViewComponentView *strongSelf = weakSelf;
|
|
63
|
+
if (!strongSelf) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
|
|
68
|
+
if (!eventEmitter) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
NSDictionary *eventBody = DaroMFabricEventBody(body);
|
|
73
|
+
eventEmitter->onAdLoadedEvent({
|
|
74
|
+
.adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
|
|
75
|
+
.latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
RCTDirectEventBlock onAdLoadFailedEvent = ^(NSDictionary *body) {
|
|
80
|
+
DaroMAdBannerViewComponentView *strongSelf = weakSelf;
|
|
81
|
+
if (!strongSelf) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
|
|
86
|
+
if (!eventEmitter) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
NSDictionary *eventBody = DaroMFabricEventBody(body);
|
|
91
|
+
eventEmitter->onAdLoadFailedEvent({
|
|
92
|
+
.adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
|
|
93
|
+
.code = DaroMFabricEventInt(eventBody, @"code"),
|
|
94
|
+
.message = DaroMFabricEventString(eventBody, @"message"),
|
|
95
|
+
.latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
RCTDirectEventBlock onAdClickedEvent = ^(NSDictionary *body) {
|
|
100
|
+
DaroMAdBannerViewComponentView *strongSelf = weakSelf;
|
|
101
|
+
if (!strongSelf) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
|
|
106
|
+
if (!eventEmitter) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
NSDictionary *eventBody = DaroMFabricEventBody(body);
|
|
111
|
+
eventEmitter->onAdClickedEvent({
|
|
112
|
+
.adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
|
|
113
|
+
.latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
RCTDirectEventBlock onAdImpressionRecordedEvent = ^(NSDictionary *body) {
|
|
118
|
+
DaroMAdBannerViewComponentView *strongSelf = weakSelf;
|
|
119
|
+
if (!strongSelf) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
auto eventEmitter = std::static_pointer_cast<const DaroMAdBannerViewEventEmitter>(strongSelf->_eventEmitter);
|
|
124
|
+
if (!eventEmitter) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
NSDictionary *eventBody = DaroMFabricEventBody(body);
|
|
129
|
+
eventEmitter->onAdImpressionRecordedEvent({
|
|
130
|
+
.adUnitId = DaroMFabricEventString(eventBody, @"adUnitId"),
|
|
131
|
+
.latencyMillis = DaroMFabricEventDouble(eventBody, @"latencyMillis"),
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
DaroMFabricSetValue(_bannerView, @"onAdLoadedEvent", onAdLoadedEvent);
|
|
136
|
+
DaroMFabricSetValue(_bannerView, @"onAdLoadFailedEvent", onAdLoadFailedEvent);
|
|
137
|
+
DaroMFabricSetValue(_bannerView, @"onAdClickedEvent", onAdClickedEvent);
|
|
138
|
+
DaroMFabricSetValue(_bannerView, @"onAdImpressionRecordedEvent", onAdImpressionRecordedEvent);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
+ (ComponentDescriptorProvider)componentDescriptorProvider
|
|
142
|
+
{
|
|
143
|
+
return concreteComponentDescriptorProvider<DaroMAdBannerViewComponentDescriptor>();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
- (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
|
|
147
|
+
{
|
|
148
|
+
const auto &oldComponentProps = *std::static_pointer_cast<const DaroMAdBannerViewProps>(_props);
|
|
149
|
+
const auto &newComponentProps = *std::static_pointer_cast<const DaroMAdBannerViewProps>(props);
|
|
150
|
+
NSMutableArray<NSString *> *changedProps = [NSMutableArray new];
|
|
151
|
+
|
|
152
|
+
if (oldComponentProps.adUnitId != newComponentProps.adUnitId) {
|
|
153
|
+
DaroMFabricSetValue(_bannerView, @"adUnitId", DaroMFabricNSStringFromStdString(newComponentProps.adUnitId));
|
|
154
|
+
[changedProps addObject:@"adUnitId"];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (oldComponentProps.adFormat != newComponentProps.adFormat) {
|
|
158
|
+
DaroMFabricSetValue(_bannerView, @"adFormat", DaroMFabricNSStringFromStdString(newComponentProps.adFormat));
|
|
159
|
+
[changedProps addObject:@"adFormat"];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (oldComponentProps.loadOnMount != newComponentProps.loadOnMount) {
|
|
163
|
+
DaroMFabricSetValue(_bannerView, @"loadOnMount", @(newComponentProps.loadOnMount));
|
|
164
|
+
[changedProps addObject:@"loadOnMount"];
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (oldComponentProps.isVisible != newComponentProps.isVisible) {
|
|
168
|
+
DaroMFabricSetValue(_bannerView, @"isVisible", @(newComponentProps.isVisible));
|
|
169
|
+
[changedProps addObject:@"isVisible"];
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
[super updateProps:props oldProps:oldProps];
|
|
173
|
+
|
|
174
|
+
DaroMFabricPerformSelectorWithObject(_bannerView, NSSelectorFromString(@"applyReactProps:"), changedProps);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
- (void)loadAd
|
|
178
|
+
{
|
|
179
|
+
DaroMFabricPerformSelector(_bannerView, NSSelectorFromString(@"loadAd"));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
- (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args
|
|
183
|
+
{
|
|
184
|
+
RCTDaroMAdBannerViewHandleCommand(self, commandName, args);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
- (void)prepareForRecycle
|
|
188
|
+
{
|
|
189
|
+
[super prepareForRecycle];
|
|
190
|
+
DaroMFabricSetValue(_bannerView, @"onAdLoadedEvent", nil);
|
|
191
|
+
DaroMFabricSetValue(_bannerView, @"onAdLoadFailedEvent", nil);
|
|
192
|
+
DaroMFabricSetValue(_bannerView, @"onAdClickedEvent", nil);
|
|
193
|
+
DaroMFabricSetValue(_bannerView, @"onAdImpressionRecordedEvent", nil);
|
|
194
|
+
DaroMFabricPerformSelector(_bannerView, NSSelectorFromString(@"prepareForReuse"));
|
|
195
|
+
[self installEventHandlers];
|
|
196
|
+
static const auto defaultProps = std::make_shared<const DaroMAdBannerViewProps>();
|
|
197
|
+
_props = defaultProps;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@end
|
|
201
|
+
|
|
202
|
+
Class<RCTComponentViewProtocol> DaroMAdBannerViewCls(void)
|
|
203
|
+
{
|
|
204
|
+
return DaroMAdBannerViewComponentView.class;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
#endif
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#import <React/RCTDefines.h>
|
|
2
|
+
|
|
3
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
|
|
5
|
+
#import <Foundation/Foundation.h>
|
|
6
|
+
#include <string>
|
|
7
|
+
|
|
8
|
+
NSDictionary *DaroMFabricEventBody(NSDictionary *body)
|
|
9
|
+
{
|
|
10
|
+
return [body isKindOfClass:NSDictionary.class] ? body : @{};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
std::string DaroMFabricEventString(NSDictionary *body, NSString *key)
|
|
14
|
+
{
|
|
15
|
+
id value = body[key];
|
|
16
|
+
return [value isKindOfClass:NSString.class] ? std::string([value UTF8String]) : "";
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
double DaroMFabricEventDouble(NSDictionary *body, NSString *key)
|
|
20
|
+
{
|
|
21
|
+
id value = body[key];
|
|
22
|
+
return [value respondsToSelector:@selector(doubleValue)] ? [value doubleValue] : 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
int DaroMFabricEventInt(NSDictionary *body, NSString *key)
|
|
26
|
+
{
|
|
27
|
+
id value = body[key];
|
|
28
|
+
return [value respondsToSelector:@selector(intValue)] ? [value intValue] : 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#endif
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#import <React/RCTDefines.h>
|
|
2
|
+
|
|
3
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
|
|
5
|
+
#import <React/RCTLog.h>
|
|
6
|
+
#import <UIKit/UIKit.h>
|
|
7
|
+
#include <folly/dynamic.h>
|
|
8
|
+
#include <string>
|
|
9
|
+
|
|
10
|
+
static NSString *DaroMFabricSetterNameForKey(NSString *key)
|
|
11
|
+
{
|
|
12
|
+
if (key.length == 0) {
|
|
13
|
+
return nil;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
NSString *first = [[key substringToIndex:1] uppercaseString];
|
|
17
|
+
NSString *rest = [key substringFromIndex:1];
|
|
18
|
+
return [NSString stringWithFormat:@"set%@%@:", first, rest];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
void DaroMFabricSetValue(UIView *view, NSString *key, id value)
|
|
22
|
+
{
|
|
23
|
+
SEL setter = NSSelectorFromString(DaroMFabricSetterNameForKey(key));
|
|
24
|
+
if (![view respondsToSelector:setter]) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
[view setValue:value forKey:key];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
void DaroMFabricPerformSelector(UIView *view, SEL selector)
|
|
32
|
+
{
|
|
33
|
+
if (![view respondsToSelector:selector]) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
IMP imp = [view methodForSelector:selector];
|
|
38
|
+
auto function = reinterpret_cast<void (*)(id, SEL)>(imp);
|
|
39
|
+
function(view, selector);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
void DaroMFabricPerformSelectorWithObject(UIView *view, SEL selector, id object)
|
|
43
|
+
{
|
|
44
|
+
if (![view respondsToSelector:selector]) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
IMP imp = [view methodForSelector:selector];
|
|
49
|
+
auto function = reinterpret_cast<void (*)(id, SEL, id)>(imp);
|
|
50
|
+
function(view, selector, object);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
void DaroMFabricPerformSelectorWithTwoObjects(UIView *view, SEL selector, id firstObject, id secondObject)
|
|
54
|
+
{
|
|
55
|
+
if (![view respondsToSelector:selector]) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
IMP imp = [view methodForSelector:selector];
|
|
60
|
+
auto function = reinterpret_cast<void (*)(id, SEL, id, id)>(imp);
|
|
61
|
+
function(view, selector, firstObject, secondObject);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
UIView *DaroMFabricCreateSwiftView(NSString *className)
|
|
65
|
+
{
|
|
66
|
+
Class viewClass = NSClassFromString(className);
|
|
67
|
+
if (![viewClass isSubclassOfClass:UIView.class]) {
|
|
68
|
+
RCTLogError(@"%@ is not available as a UIView subclass.", className);
|
|
69
|
+
return [UIView new];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return [[viewClass alloc] init];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
NSString *DaroMFabricNSStringFromStdString(const std::string &value)
|
|
76
|
+
{
|
|
77
|
+
return [NSString stringWithUTF8String:value.c_str()];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
static id DaroMFabricNSObjectFromDynamic(const folly::dynamic &value)
|
|
81
|
+
{
|
|
82
|
+
switch (value.type()) {
|
|
83
|
+
case folly::dynamic::NULLT:
|
|
84
|
+
return (id)kCFNull;
|
|
85
|
+
case folly::dynamic::BOOL:
|
|
86
|
+
return value.getBool() ? @YES : @NO;
|
|
87
|
+
case folly::dynamic::INT64:
|
|
88
|
+
return @(value.getInt());
|
|
89
|
+
case folly::dynamic::DOUBLE:
|
|
90
|
+
return @(value.getDouble());
|
|
91
|
+
case folly::dynamic::STRING:
|
|
92
|
+
return [[NSString alloc] initWithBytes:value.c_str() length:value.size() encoding:NSUTF8StringEncoding];
|
|
93
|
+
case folly::dynamic::ARRAY: {
|
|
94
|
+
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:value.size()];
|
|
95
|
+
for (const auto &item : value) {
|
|
96
|
+
id converted = DaroMFabricNSObjectFromDynamic(item);
|
|
97
|
+
if (converted != nil) {
|
|
98
|
+
[array addObject:converted];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return array;
|
|
102
|
+
}
|
|
103
|
+
case folly::dynamic::OBJECT: {
|
|
104
|
+
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithCapacity:value.size()];
|
|
105
|
+
for (const auto &item : value.items()) {
|
|
106
|
+
id key = DaroMFabricNSObjectFromDynamic(item.first);
|
|
107
|
+
id converted = DaroMFabricNSObjectFromDynamic(item.second);
|
|
108
|
+
if (key != nil && converted != nil && [key conformsToProtocol:@protocol(NSCopying)]) {
|
|
109
|
+
dictionary[key] = converted;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return dictionary;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
id DaroMFabricIdFromDynamic(const folly::dynamic &value)
|
|
118
|
+
{
|
|
119
|
+
id converted = DaroMFabricNSObjectFromDynamic(value);
|
|
120
|
+
return converted == (id)kCFNull ? nil : converted;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
#endif
|