cloudx-react-native 2.0.0-beta.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 (171) hide show
  1. package/LICENSE +57 -0
  2. package/README.md +1258 -0
  3. package/android/build.gradle +78 -0
  4. package/android/gradle.properties +7 -0
  5. package/android/src/main/AndroidManifest.xml +7 -0
  6. package/android/src/main/java/com/cloudxreactnative/CloudXAdViewEvent.kt +15 -0
  7. package/android/src/main/java/com/cloudxreactnative/CloudXBannerViewManagerImpl.kt +472 -0
  8. package/android/src/main/java/com/cloudxreactnative/CloudXReactNativeModuleImpl.kt +861 -0
  9. package/android/src/newarch/com/cloudxreactnative/CloudXBannerViewManager.kt +90 -0
  10. package/android/src/newarch/com/cloudxreactnative/CloudXReactNativeModule.kt +73 -0
  11. package/android/src/newarch/com/cloudxreactnative/CloudXReactNativePackage.kt +37 -0
  12. package/android/src/oldarch/com/cloudxreactnative/CloudXBannerViewManager.kt +76 -0
  13. package/android/src/oldarch/com/cloudxreactnative/CloudXReactNativeModule.kt +73 -0
  14. package/android/src/oldarch/com/cloudxreactnative/CloudXReactNativePackage.kt +16 -0
  15. package/cloudx-react-native.podspec +46 -0
  16. package/ios/AppTrackingTransparency.h +13 -0
  17. package/ios/AppTrackingTransparency.mm +59 -0
  18. package/ios/RNCloudXBannerView.h +51 -0
  19. package/ios/RNCloudXBannerView.mm +633 -0
  20. package/ios/RNCloudXBannerViewManager.h +11 -0
  21. package/ios/RNCloudXBannerViewManager.mm +60 -0
  22. package/ios/RNCloudXModule.h +30 -0
  23. package/ios/RNCloudXModule.mm +1088 -0
  24. package/lib/commonjs/AdView.js +151 -0
  25. package/lib/commonjs/AdView.js.map +1 -0
  26. package/lib/commonjs/AppTrackingTransparency.js +62 -0
  27. package/lib/commonjs/AppTrackingTransparency.js.map +1 -0
  28. package/lib/commonjs/BannerAd.js +117 -0
  29. package/lib/commonjs/BannerAd.js.map +1 -0
  30. package/lib/commonjs/CloudX.js +49 -0
  31. package/lib/commonjs/CloudX.js.map +1 -0
  32. package/lib/commonjs/ErrorCode.js +116 -0
  33. package/lib/commonjs/ErrorCode.js.map +1 -0
  34. package/lib/commonjs/EventEmitter.js +44 -0
  35. package/lib/commonjs/EventEmitter.js.map +1 -0
  36. package/lib/commonjs/InterstitialAd.js +94 -0
  37. package/lib/commonjs/InterstitialAd.js.map +1 -0
  38. package/lib/commonjs/MRecAd.js +117 -0
  39. package/lib/commonjs/MRecAd.js.map +1 -0
  40. package/lib/commonjs/RewardedAd.js +103 -0
  41. package/lib/commonjs/RewardedAd.js.map +1 -0
  42. package/lib/commonjs/hooks.js +239 -0
  43. package/lib/commonjs/hooks.js.map +1 -0
  44. package/lib/commonjs/index.js +144 -0
  45. package/lib/commonjs/index.js.map +1 -0
  46. package/lib/commonjs/specs/CloudXAdViewNativeComponent.js +26 -0
  47. package/lib/commonjs/specs/CloudXAdViewNativeComponent.js.map +1 -0
  48. package/lib/commonjs/specs/NativeCloudXModule.js +18 -0
  49. package/lib/commonjs/specs/NativeCloudXModule.js.map +1 -0
  50. package/lib/commonjs/types/AdEvent.js +6 -0
  51. package/lib/commonjs/types/AdEvent.js.map +1 -0
  52. package/lib/commonjs/types/AdInfo.js +6 -0
  53. package/lib/commonjs/types/AdInfo.js.map +1 -0
  54. package/lib/commonjs/types/BannerAd.js +6 -0
  55. package/lib/commonjs/types/BannerAd.js.map +1 -0
  56. package/lib/commonjs/types/CloudX.js +6 -0
  57. package/lib/commonjs/types/CloudX.js.map +1 -0
  58. package/lib/commonjs/types/Configuration.js +2 -0
  59. package/lib/commonjs/types/Configuration.js.map +1 -0
  60. package/lib/commonjs/types/FullscreenAd.js +6 -0
  61. package/lib/commonjs/types/FullscreenAd.js.map +1 -0
  62. package/lib/commonjs/types/RewardedAd.js +6 -0
  63. package/lib/commonjs/types/RewardedAd.js.map +1 -0
  64. package/lib/commonjs/types/index.js +2 -0
  65. package/lib/commonjs/types/index.js.map +1 -0
  66. package/lib/module/AdView.js +144 -0
  67. package/lib/module/AdView.js.map +1 -0
  68. package/lib/module/AppTrackingTransparency.js +55 -0
  69. package/lib/module/AppTrackingTransparency.js.map +1 -0
  70. package/lib/module/BannerAd.js +110 -0
  71. package/lib/module/BannerAd.js.map +1 -0
  72. package/lib/module/CloudX.js +42 -0
  73. package/lib/module/CloudX.js.map +1 -0
  74. package/lib/module/ErrorCode.js +110 -0
  75. package/lib/module/ErrorCode.js.map +1 -0
  76. package/lib/module/EventEmitter.js +35 -0
  77. package/lib/module/EventEmitter.js.map +1 -0
  78. package/lib/module/InterstitialAd.js +87 -0
  79. package/lib/module/InterstitialAd.js.map +1 -0
  80. package/lib/module/MRecAd.js +110 -0
  81. package/lib/module/MRecAd.js.map +1 -0
  82. package/lib/module/RewardedAd.js +96 -0
  83. package/lib/module/RewardedAd.js.map +1 -0
  84. package/lib/module/hooks.js +230 -0
  85. package/lib/module/hooks.js.map +1 -0
  86. package/lib/module/index.js +33 -0
  87. package/lib/module/index.js.map +1 -0
  88. package/lib/module/specs/CloudXAdViewNativeComponent.js +20 -0
  89. package/lib/module/specs/CloudXAdViewNativeComponent.js.map +1 -0
  90. package/lib/module/specs/NativeCloudXModule.js +14 -0
  91. package/lib/module/specs/NativeCloudXModule.js.map +1 -0
  92. package/lib/module/types/AdEvent.js +2 -0
  93. package/lib/module/types/AdEvent.js.map +1 -0
  94. package/lib/module/types/AdInfo.js +2 -0
  95. package/lib/module/types/AdInfo.js.map +1 -0
  96. package/lib/module/types/BannerAd.js +2 -0
  97. package/lib/module/types/BannerAd.js.map +1 -0
  98. package/lib/module/types/CloudX.js +2 -0
  99. package/lib/module/types/CloudX.js.map +1 -0
  100. package/lib/module/types/Configuration.js +2 -0
  101. package/lib/module/types/Configuration.js.map +1 -0
  102. package/lib/module/types/FullscreenAd.js +2 -0
  103. package/lib/module/types/FullscreenAd.js.map +1 -0
  104. package/lib/module/types/RewardedAd.js +2 -0
  105. package/lib/module/types/RewardedAd.js.map +1 -0
  106. package/lib/module/types/index.js +2 -0
  107. package/lib/module/types/index.js.map +1 -0
  108. package/lib/typescript/src/AdView.d.ts +69 -0
  109. package/lib/typescript/src/AdView.d.ts.map +1 -0
  110. package/lib/typescript/src/AppTrackingTransparency.d.ts +28 -0
  111. package/lib/typescript/src/AppTrackingTransparency.d.ts.map +1 -0
  112. package/lib/typescript/src/BannerAd.d.ts +4 -0
  113. package/lib/typescript/src/BannerAd.d.ts.map +1 -0
  114. package/lib/typescript/src/CloudX.d.ts +4 -0
  115. package/lib/typescript/src/CloudX.d.ts.map +1 -0
  116. package/lib/typescript/src/ErrorCode.d.ts +102 -0
  117. package/lib/typescript/src/ErrorCode.d.ts.map +1 -0
  118. package/lib/typescript/src/EventEmitter.d.ts +16 -0
  119. package/lib/typescript/src/EventEmitter.d.ts.map +1 -0
  120. package/lib/typescript/src/InterstitialAd.d.ts +4 -0
  121. package/lib/typescript/src/InterstitialAd.d.ts.map +1 -0
  122. package/lib/typescript/src/MRecAd.d.ts +4 -0
  123. package/lib/typescript/src/MRecAd.d.ts.map +1 -0
  124. package/lib/typescript/src/RewardedAd.d.ts +4 -0
  125. package/lib/typescript/src/RewardedAd.d.ts.map +1 -0
  126. package/lib/typescript/src/hooks.d.ts +50 -0
  127. package/lib/typescript/src/hooks.d.ts.map +1 -0
  128. package/lib/typescript/src/index.d.ts +23 -0
  129. package/lib/typescript/src/index.d.ts.map +1 -0
  130. package/lib/typescript/src/specs/CloudXAdViewNativeComponent.d.ts +61 -0
  131. package/lib/typescript/src/specs/CloudXAdViewNativeComponent.d.ts.map +1 -0
  132. package/lib/typescript/src/specs/NativeCloudXModule.d.ts +106 -0
  133. package/lib/typescript/src/specs/NativeCloudXModule.d.ts.map +1 -0
  134. package/lib/typescript/src/types/AdEvent.d.ts +10 -0
  135. package/lib/typescript/src/types/AdEvent.d.ts.map +1 -0
  136. package/lib/typescript/src/types/AdInfo.d.ts +48 -0
  137. package/lib/typescript/src/types/AdInfo.d.ts.map +1 -0
  138. package/lib/typescript/src/types/BannerAd.d.ts +39 -0
  139. package/lib/typescript/src/types/BannerAd.d.ts.map +1 -0
  140. package/lib/typescript/src/types/CloudX.d.ts +25 -0
  141. package/lib/typescript/src/types/CloudX.d.ts.map +1 -0
  142. package/lib/typescript/src/types/Configuration.d.ts +10 -0
  143. package/lib/typescript/src/types/Configuration.d.ts.map +1 -0
  144. package/lib/typescript/src/types/FullscreenAd.d.ts +29 -0
  145. package/lib/typescript/src/types/FullscreenAd.d.ts.map +1 -0
  146. package/lib/typescript/src/types/RewardedAd.d.ts +10 -0
  147. package/lib/typescript/src/types/RewardedAd.d.ts.map +1 -0
  148. package/lib/typescript/src/types/index.d.ts +8 -0
  149. package/lib/typescript/src/types/index.d.ts.map +1 -0
  150. package/package.json +78 -0
  151. package/src/AdView.tsx +213 -0
  152. package/src/AppTrackingTransparency.ts +56 -0
  153. package/src/BannerAd.ts +133 -0
  154. package/src/CloudX.ts +55 -0
  155. package/src/ErrorCode.ts +157 -0
  156. package/src/EventEmitter.ts +38 -0
  157. package/src/InterstitialAd.ts +103 -0
  158. package/src/MRecAd.ts +133 -0
  159. package/src/RewardedAd.ts +113 -0
  160. package/src/hooks.ts +292 -0
  161. package/src/index.ts +50 -0
  162. package/src/specs/CloudXAdViewNativeComponent.ts +82 -0
  163. package/src/specs/NativeCloudXModule.ts +162 -0
  164. package/src/types/AdEvent.ts +11 -0
  165. package/src/types/AdInfo.ts +60 -0
  166. package/src/types/BannerAd.ts +59 -0
  167. package/src/types/CloudX.ts +33 -0
  168. package/src/types/Configuration.ts +10 -0
  169. package/src/types/FullscreenAd.ts +39 -0
  170. package/src/types/RewardedAd.ts +10 -0
  171. package/src/types/index.ts +7 -0
@@ -0,0 +1,90 @@
1
+ package com.cloudxreactnative
2
+
3
+ import com.facebook.react.bridge.ReadableArray
4
+ import com.facebook.react.module.annotations.ReactModule
5
+ import com.facebook.react.uimanager.SimpleViewManager
6
+ import com.facebook.react.uimanager.ThemedReactContext
7
+ import com.facebook.react.uimanager.ViewManagerDelegate
8
+ import com.facebook.react.viewmanagers.CloudXAdViewManagerDelegate
9
+ import com.facebook.react.viewmanagers.CloudXAdViewManagerInterface
10
+ import androidx.annotation.NonNull
11
+ import androidx.annotation.Nullable
12
+
13
+ @ReactModule(name = CloudXBannerViewManagerImpl.NAME)
14
+ class CloudXBannerViewManager :
15
+ SimpleViewManager<CloudXBannerViewWrapper>(),
16
+ CloudXAdViewManagerInterface<CloudXBannerViewWrapper> {
17
+
18
+ private val delegate: ViewManagerDelegate<CloudXBannerViewWrapper>
19
+
20
+ init {
21
+ delegate = CloudXAdViewManagerDelegate(this)
22
+ }
23
+
24
+ override fun getDelegate(): ViewManagerDelegate<CloudXBannerViewWrapper>? {
25
+ return delegate
26
+ }
27
+
28
+ @NonNull
29
+ override fun getName(): String = CloudXBannerViewManagerImpl.NAME
30
+
31
+ @NonNull
32
+ override fun createViewInstance(@NonNull reactContext: ThemedReactContext): CloudXBannerViewWrapper {
33
+ return CloudXBannerViewManagerImpl.createViewInstance(reactContext)
34
+ }
35
+
36
+ override fun receiveCommand(@NonNull view: CloudXBannerViewWrapper, commandId: String, @Nullable args: ReadableArray?) {
37
+ super.receiveCommand(view, commandId, args)
38
+ CloudXBannerViewManagerImpl.receiveCommand(view, commandId, args)
39
+ }
40
+
41
+ override fun setPlacement(view: CloudXBannerViewWrapper, placement: String?) {
42
+ CloudXBannerViewManagerImpl.setPlacement(view, placement)
43
+ }
44
+
45
+ override fun setAdUnitId(view: CloudXBannerViewWrapper, adUnitId: String?) {
46
+ CloudXBannerViewManagerImpl.setAdId(view, adUnitId)
47
+ }
48
+
49
+ override fun setAdFormat(view: CloudXBannerViewWrapper, adFormat: String?) {
50
+ CloudXBannerViewManagerImpl.setAdType(view, adFormat)
51
+ }
52
+
53
+ override fun setAdPosition(view: CloudXBannerViewWrapper, adPosition: String?) {
54
+ CloudXBannerViewManagerImpl.setPosition(view, adPosition)
55
+ }
56
+
57
+ override fun setLoadOnMount(view: CloudXBannerViewWrapper, loadOnMount: Boolean) {
58
+ CloudXBannerViewManagerImpl.setShouldLoad(view, loadOnMount)
59
+ }
60
+
61
+ override fun setCustomData(view: CloudXBannerViewWrapper, customData: String?) {
62
+ CloudXBannerViewManagerImpl.setCustomData(view, customData)
63
+ }
64
+
65
+ override fun setAutoRefresh(view: CloudXBannerViewWrapper, autoRefresh: Boolean) {
66
+ CloudXBannerViewManagerImpl.setAutoRefresh(view, autoRefresh)
67
+ }
68
+
69
+ override fun loadAd(view: CloudXBannerViewWrapper) {
70
+ CloudXBannerViewManagerImpl.loadAd(view)
71
+ }
72
+
73
+ override fun destroy(view: CloudXBannerViewWrapper) {
74
+ CloudXBannerViewManagerImpl.destroy(view)
75
+ }
76
+
77
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
78
+ return CloudXBannerViewManagerImpl.getExportedCustomDirectEventTypeConstants()
79
+ }
80
+
81
+ override fun onAfterUpdateTransaction(@NonNull view: CloudXBannerViewWrapper) {
82
+ super.onAfterUpdateTransaction(view)
83
+ CloudXBannerViewManagerImpl.onAfterUpdateTransaction(view)
84
+ }
85
+
86
+ override fun onDropViewInstance(@NonNull view: CloudXBannerViewWrapper) {
87
+ CloudXBannerViewManagerImpl.onDropViewInstance(view)
88
+ super.onDropViewInstance(view)
89
+ }
90
+ }
@@ -0,0 +1,73 @@
1
+ package com.cloudxreactnative
2
+
3
+ import com.facebook.fbreact.specs.NativeCloudXModuleSpec
4
+ import com.facebook.react.bridge.Promise
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.bridge.ReactMethod
7
+
8
+ class CloudXReactNativeModule(reactContext: ReactApplicationContext) :
9
+ NativeCloudXModuleSpec(reactContext) {
10
+
11
+ private val impl = CloudXReactNativeModuleImpl(reactContext)
12
+
13
+ override fun getName(): String = CloudXReactNativeModuleImpl.MODULE_NAME
14
+
15
+ override fun getTypedExportedConstants(): MutableMap<String, Any> = impl.getConstants()
16
+
17
+ override fun onCatalystInstanceDestroy() {
18
+ super.onCatalystInstanceDestroy()
19
+ impl.onCatalystInstanceDestroy()
20
+ }
21
+
22
+ @ReactMethod override fun addListener(eventName: String) {}
23
+ @ReactMethod override fun removeListeners(count: Double) {}
24
+
25
+ @ReactMethod override fun initialize(pluginVersion: String, appKey: String, promise: Promise) = impl.initialize(pluginVersion, appKey, promise)
26
+ @ReactMethod override fun isInitialized(promise: Promise) = impl.isInitialized(promise)
27
+ @ReactMethod override fun isTablet(promise: Promise) = impl.isTablet(promise)
28
+ @ReactMethod override fun getVersion(promise: Promise) = impl.getVersion(promise)
29
+
30
+ @ReactMethod override fun setMinLogLevel(level: String) = impl.setMinLogLevel(level)
31
+ @ReactMethod override fun setVisualDebuggingEnabled(enabled: Boolean) = impl.setVisualDebuggingEnabled(enabled)
32
+
33
+ @ReactMethod override fun setHashedUserID(hashedUserID: String) = impl.setHashedUserID(hashedUserID)
34
+ @ReactMethod override fun setUserKeyValue(key: String, value: String) = impl.setUserKeyValue(key, value)
35
+ @ReactMethod override fun setAppKeyValue(key: String, value: String) = impl.setAppKeyValue(key, value)
36
+ @ReactMethod override fun clearAllKeyValues() = impl.clearAllKeyValues()
37
+
38
+ @ReactMethod override fun createBanner(adUnitId: String, position: String) = impl.createBanner(adUnitId, position)
39
+ @ReactMethod override fun createBannerWithOffsets(adUnitId: String, position: String, xOffset: Double, yOffset: Double) = impl.createBannerWithOffsets(adUnitId, position, xOffset, yOffset)
40
+ @ReactMethod override fun showBanner(adUnitId: String) = impl.showBanner(adUnitId)
41
+ @ReactMethod override fun hideBanner(adUnitId: String) = impl.hideBanner(adUnitId)
42
+ @ReactMethod override fun destroyBanner(adUnitId: String) = impl.destroyBanner(adUnitId)
43
+ @ReactMethod override fun setBannerPlacement(adUnitId: String, placement: String?) = impl.setBannerPlacement(adUnitId, placement)
44
+ @ReactMethod override fun setBannerCustomData(adUnitId: String, customData: String?) = impl.setBannerCustomData(adUnitId, customData)
45
+ @ReactMethod override fun startBannerAutoRefresh(adUnitId: String) = impl.startBannerAutoRefresh(adUnitId)
46
+ @ReactMethod override fun stopBannerAutoRefresh(adUnitId: String) = impl.stopBannerAutoRefresh(adUnitId)
47
+ @ReactMethod override fun updateBannerPosition(adUnitId: String, position: String) = impl.updateBannerPosition(adUnitId, position)
48
+ @ReactMethod override fun updateBannerOffsets(adUnitId: String, xOffset: Double, yOffset: Double) = impl.updateBannerOffsets(adUnitId, xOffset, yOffset)
49
+ @ReactMethod override fun setBannerBackgroundColor(adUnitId: String, hexColorString: String) = impl.setBannerBackgroundColor(adUnitId, hexColorString)
50
+
51
+ @ReactMethod override fun createMRec(adUnitId: String, position: String) = impl.createMRec(adUnitId, position)
52
+ @ReactMethod override fun createMRecWithOffsets(adUnitId: String, position: String, xOffset: Double, yOffset: Double) = impl.createMRecWithOffsets(adUnitId, position, xOffset, yOffset)
53
+ @ReactMethod override fun showMRec(adUnitId: String) = impl.showMRec(adUnitId)
54
+ @ReactMethod override fun hideMRec(adUnitId: String) = impl.hideMRec(adUnitId)
55
+ @ReactMethod override fun destroyMRec(adUnitId: String) = impl.destroyMRec(adUnitId)
56
+ @ReactMethod override fun setMRecPlacement(adUnitId: String, placement: String?) = impl.setMRecPlacement(adUnitId, placement)
57
+ @ReactMethod override fun setMRecCustomData(adUnitId: String, customData: String?) = impl.setMRecCustomData(adUnitId, customData)
58
+ @ReactMethod override fun startMRecAutoRefresh(adUnitId: String) = impl.startMRecAutoRefresh(adUnitId)
59
+ @ReactMethod override fun stopMRecAutoRefresh(adUnitId: String) = impl.stopMRecAutoRefresh(adUnitId)
60
+ @ReactMethod override fun updateMRecPosition(adUnitId: String, position: String) = impl.updateMRecPosition(adUnitId, position)
61
+ @ReactMethod override fun updateMRecOffsets(adUnitId: String, xOffset: Double, yOffset: Double) = impl.updateMRecOffsets(adUnitId, xOffset, yOffset)
62
+ @ReactMethod override fun setMRecBackgroundColor(adUnitId: String, hexColorString: String) = impl.setMRecBackgroundColor(adUnitId, hexColorString)
63
+
64
+ @ReactMethod override fun loadInterstitial(adUnitId: String) = impl.loadInterstitial(adUnitId)
65
+ @ReactMethod override fun isInterstitialReady(adUnitId: String, promise: Promise) = impl.isInterstitialReady(adUnitId, promise)
66
+ @ReactMethod override fun showInterstitial(adUnitId: String, placement: String?, customData: String?) = impl.showInterstitial(adUnitId, placement, customData)
67
+ @ReactMethod override fun destroyInterstitial(adUnitId: String) = impl.destroyInterstitial(adUnitId)
68
+
69
+ @ReactMethod override fun loadRewarded(adUnitId: String) = impl.loadRewarded(adUnitId)
70
+ @ReactMethod override fun isRewardedReady(adUnitId: String, promise: Promise) = impl.isRewardedReady(adUnitId, promise)
71
+ @ReactMethod override fun showRewarded(adUnitId: String, placement: String?, customData: String?) = impl.showRewarded(adUnitId, placement, customData)
72
+ @ReactMethod override fun destroyRewarded(adUnitId: String) = impl.destroyRewarded(adUnitId)
73
+ }
@@ -0,0 +1,37 @@
1
+ package com.cloudxreactnative
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfo
7
+ import com.facebook.react.module.model.ReactModuleInfoProvider
8
+ import com.facebook.react.uimanager.ViewManager
9
+
10
+ class CloudXReactNativePackage : BaseReactPackage() {
11
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12
+ return when (name) {
13
+ CloudXReactNativeModuleImpl.MODULE_NAME -> CloudXReactNativeModule(reactContext)
14
+ else -> null
15
+ }
16
+ }
17
+
18
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
19
+ return ReactModuleInfoProvider {
20
+ mapOf(
21
+ CloudXReactNativeModuleImpl.MODULE_NAME to ReactModuleInfo(
22
+ CloudXReactNativeModuleImpl.MODULE_NAME,
23
+ CloudXReactNativeModule::class.java.name,
24
+ false, // canOverrideExistingModule
25
+ false, // needsEagerInit
26
+ true, // hasConstants
27
+ false, // isCxxModule
28
+ true // isTurboModule
29
+ )
30
+ )
31
+ }
32
+ }
33
+
34
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
35
+ return listOf(CloudXBannerViewManager())
36
+ }
37
+ }
@@ -0,0 +1,76 @@
1
+ package com.cloudxreactnative
2
+
3
+ import com.facebook.react.bridge.ReadableArray
4
+ import com.facebook.react.uimanager.SimpleViewManager
5
+ import com.facebook.react.uimanager.ThemedReactContext
6
+ import com.facebook.react.uimanager.annotations.ReactProp
7
+ import androidx.annotation.NonNull
8
+ import androidx.annotation.Nullable
9
+
10
+ class CloudXBannerViewManager : SimpleViewManager<CloudXBannerViewWrapper>() {
11
+
12
+ @NonNull
13
+ override fun getName(): String = CloudXBannerViewManagerImpl.NAME
14
+
15
+ @NonNull
16
+ override fun createViewInstance(@NonNull reactContext: ThemedReactContext): CloudXBannerViewWrapper {
17
+ return CloudXBannerViewManagerImpl.createViewInstance(reactContext)
18
+ }
19
+
20
+ @ReactProp(name = "placement")
21
+ fun setPlacement(view: CloudXBannerViewWrapper, placement: String?) {
22
+ CloudXBannerViewManagerImpl.setPlacement(view, placement)
23
+ }
24
+
25
+ @ReactProp(name = "adUnitId")
26
+ fun setAdUnitId(view: CloudXBannerViewWrapper, adUnitId: String?) {
27
+ CloudXBannerViewManagerImpl.setAdId(view, adUnitId)
28
+ }
29
+
30
+ @ReactProp(name = "adFormat")
31
+ fun setAdFormat(view: CloudXBannerViewWrapper, adFormat: String?) {
32
+ CloudXBannerViewManagerImpl.setAdType(view, adFormat)
33
+ }
34
+
35
+ @ReactProp(name = "adPosition")
36
+ fun setAdPosition(view: CloudXBannerViewWrapper, adPosition: String?) {
37
+ CloudXBannerViewManagerImpl.setPosition(view, adPosition)
38
+ }
39
+
40
+ @ReactProp(name = "loadOnMount")
41
+ fun setLoadOnMount(view: CloudXBannerViewWrapper, loadOnMount: Boolean) {
42
+ CloudXBannerViewManagerImpl.setShouldLoad(view, loadOnMount)
43
+ }
44
+
45
+ @ReactProp(name = "customData")
46
+ fun setCustomData(view: CloudXBannerViewWrapper, customData: String?) {
47
+ CloudXBannerViewManagerImpl.setCustomData(view, customData)
48
+ }
49
+
50
+ @ReactProp(name = "autoRefresh")
51
+ fun setAutoRefresh(view: CloudXBannerViewWrapper, autoRefresh: Boolean) {
52
+ CloudXBannerViewManagerImpl.setAutoRefresh(view, autoRefresh)
53
+ }
54
+
55
+ override fun receiveCommand(@NonNull view: CloudXBannerViewWrapper, commandId: String, @Nullable args: ReadableArray?) {
56
+ super.receiveCommand(view, commandId, args)
57
+ when (commandId) {
58
+ "loadAd" -> CloudXBannerViewManagerImpl.loadAd(view)
59
+ "destroy" -> CloudXBannerViewManagerImpl.destroy(view)
60
+ }
61
+ }
62
+
63
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
64
+ return CloudXBannerViewManagerImpl.getExportedCustomDirectEventTypeConstants()
65
+ }
66
+
67
+ override fun onAfterUpdateTransaction(@NonNull view: CloudXBannerViewWrapper) {
68
+ super.onAfterUpdateTransaction(view)
69
+ CloudXBannerViewManagerImpl.onAfterUpdateTransaction(view)
70
+ }
71
+
72
+ override fun onDropViewInstance(@NonNull view: CloudXBannerViewWrapper) {
73
+ CloudXBannerViewManagerImpl.onDropViewInstance(view)
74
+ super.onDropViewInstance(view)
75
+ }
76
+ }
@@ -0,0 +1,73 @@
1
+ package com.cloudxreactnative
2
+
3
+ import com.facebook.react.bridge.Promise
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
6
+ import com.facebook.react.bridge.ReactMethod
7
+
8
+ class CloudXReactNativeModule(reactContext: ReactApplicationContext) :
9
+ ReactContextBaseJavaModule(reactContext) {
10
+
11
+ private val impl = CloudXReactNativeModuleImpl(reactContext)
12
+
13
+ override fun getName(): String = CloudXReactNativeModuleImpl.MODULE_NAME
14
+
15
+ override fun getConstants(): MutableMap<String, Any> = impl.getConstants()
16
+
17
+ override fun onCatalystInstanceDestroy() {
18
+ super.onCatalystInstanceDestroy()
19
+ impl.onCatalystInstanceDestroy()
20
+ }
21
+
22
+ @ReactMethod fun addListener(eventName: String) {}
23
+ @ReactMethod fun removeListeners(count: Double) {}
24
+
25
+ @ReactMethod fun initialize(pluginVersion: String, appKey: String, promise: Promise) = impl.initialize(pluginVersion, appKey, promise)
26
+ @ReactMethod fun isInitialized(promise: Promise) = impl.isInitialized(promise)
27
+ @ReactMethod fun isTablet(promise: Promise) = impl.isTablet(promise)
28
+ @ReactMethod fun getVersion(promise: Promise) = impl.getVersion(promise)
29
+
30
+ @ReactMethod fun setMinLogLevel(level: String) = impl.setMinLogLevel(level)
31
+ @ReactMethod fun setVisualDebuggingEnabled(enabled: Boolean) = impl.setVisualDebuggingEnabled(enabled)
32
+
33
+ @ReactMethod fun setHashedUserID(hashedUserID: String) = impl.setHashedUserID(hashedUserID)
34
+ @ReactMethod fun setUserKeyValue(key: String, value: String) = impl.setUserKeyValue(key, value)
35
+ @ReactMethod fun setAppKeyValue(key: String, value: String) = impl.setAppKeyValue(key, value)
36
+ @ReactMethod fun clearAllKeyValues() = impl.clearAllKeyValues()
37
+
38
+ @ReactMethod fun createBanner(adUnitId: String, position: String) = impl.createBanner(adUnitId, position)
39
+ @ReactMethod fun createBannerWithOffsets(adUnitId: String, position: String, xOffset: Double, yOffset: Double) = impl.createBannerWithOffsets(adUnitId, position, xOffset, yOffset)
40
+ @ReactMethod fun showBanner(adUnitId: String) = impl.showBanner(adUnitId)
41
+ @ReactMethod fun hideBanner(adUnitId: String) = impl.hideBanner(adUnitId)
42
+ @ReactMethod fun destroyBanner(adUnitId: String) = impl.destroyBanner(adUnitId)
43
+ @ReactMethod fun setBannerPlacement(adUnitId: String, placement: String?) = impl.setBannerPlacement(adUnitId, placement)
44
+ @ReactMethod fun setBannerCustomData(adUnitId: String, customData: String?) = impl.setBannerCustomData(adUnitId, customData)
45
+ @ReactMethod fun startBannerAutoRefresh(adUnitId: String) = impl.startBannerAutoRefresh(adUnitId)
46
+ @ReactMethod fun stopBannerAutoRefresh(adUnitId: String) = impl.stopBannerAutoRefresh(adUnitId)
47
+ @ReactMethod fun updateBannerPosition(adUnitId: String, position: String) = impl.updateBannerPosition(adUnitId, position)
48
+ @ReactMethod fun updateBannerOffsets(adUnitId: String, xOffset: Double, yOffset: Double) = impl.updateBannerOffsets(adUnitId, xOffset, yOffset)
49
+ @ReactMethod fun setBannerBackgroundColor(adUnitId: String, hexColorString: String) = impl.setBannerBackgroundColor(adUnitId, hexColorString)
50
+
51
+ @ReactMethod fun createMRec(adUnitId: String, position: String) = impl.createMRec(adUnitId, position)
52
+ @ReactMethod fun createMRecWithOffsets(adUnitId: String, position: String, xOffset: Double, yOffset: Double) = impl.createMRecWithOffsets(adUnitId, position, xOffset, yOffset)
53
+ @ReactMethod fun showMRec(adUnitId: String) = impl.showMRec(adUnitId)
54
+ @ReactMethod fun hideMRec(adUnitId: String) = impl.hideMRec(adUnitId)
55
+ @ReactMethod fun destroyMRec(adUnitId: String) = impl.destroyMRec(adUnitId)
56
+ @ReactMethod fun setMRecPlacement(adUnitId: String, placement: String?) = impl.setMRecPlacement(adUnitId, placement)
57
+ @ReactMethod fun setMRecCustomData(adUnitId: String, customData: String?) = impl.setMRecCustomData(adUnitId, customData)
58
+ @ReactMethod fun startMRecAutoRefresh(adUnitId: String) = impl.startMRecAutoRefresh(adUnitId)
59
+ @ReactMethod fun stopMRecAutoRefresh(adUnitId: String) = impl.stopMRecAutoRefresh(adUnitId)
60
+ @ReactMethod fun updateMRecPosition(adUnitId: String, position: String) = impl.updateMRecPosition(adUnitId, position)
61
+ @ReactMethod fun updateMRecOffsets(adUnitId: String, xOffset: Double, yOffset: Double) = impl.updateMRecOffsets(adUnitId, xOffset, yOffset)
62
+ @ReactMethod fun setMRecBackgroundColor(adUnitId: String, hexColorString: String) = impl.setMRecBackgroundColor(adUnitId, hexColorString)
63
+
64
+ @ReactMethod fun loadInterstitial(adUnitId: String) = impl.loadInterstitial(adUnitId)
65
+ @ReactMethod fun isInterstitialReady(adUnitId: String, promise: Promise) = impl.isInterstitialReady(adUnitId, promise)
66
+ @ReactMethod fun showInterstitial(adUnitId: String, placement: String?, customData: String?) = impl.showInterstitial(adUnitId, placement, customData)
67
+ @ReactMethod fun destroyInterstitial(adUnitId: String) = impl.destroyInterstitial(adUnitId)
68
+
69
+ @ReactMethod fun loadRewarded(adUnitId: String) = impl.loadRewarded(adUnitId)
70
+ @ReactMethod fun isRewardedReady(adUnitId: String, promise: Promise) = impl.isRewardedReady(adUnitId, promise)
71
+ @ReactMethod fun showRewarded(adUnitId: String, placement: String?, customData: String?) = impl.showRewarded(adUnitId, placement, customData)
72
+ @ReactMethod fun destroyRewarded(adUnitId: String) = impl.destroyRewarded(adUnitId)
73
+ }
@@ -0,0 +1,16 @@
1
+ package com.cloudxreactnative
2
+
3
+ import com.facebook.react.ReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.uimanager.ViewManager
7
+
8
+ class CloudXReactNativePackage : ReactPackage {
9
+ override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
10
+ return listOf(CloudXReactNativeModule(reactContext))
11
+ }
12
+
13
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
14
+ return listOf(CloudXBannerViewManager())
15
+ }
16
+ }
@@ -0,0 +1,46 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "cloudx-react-native"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = "https://github.com/cloudx-io/cloudx-react-native"
10
+ s.license = package["license"]
11
+ s.authors = { "CloudX" => "support@cloudx.io" }
12
+ s.platforms = { :ios => "13.0" }
13
+ s.source = { :git => "https://github.com/cloudx-io/cloudx-react-native.git", :tag => "#{s.version}" }
14
+
15
+ s.requires_arc = true
16
+
17
+ s.dependency "CloudXCore", "~> 2.1.0-beta"
18
+
19
+ s.source_files = "ios/**/*.{h,mm}"
20
+
21
+ s.pod_target_xcconfig = {
22
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
23
+ }
24
+
25
+ if respond_to?(:install_modules_dependencies, true)
26
+ install_modules_dependencies(s)
27
+ else
28
+ s.dependency "React-Core"
29
+
30
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1'
31
+ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
32
+ s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
33
+ s.pod_target_xcconfig = {
34
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
35
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
36
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
37
+ }
38
+ s.dependency "React-RCTFabric"
39
+ s.dependency "React-Codegen"
40
+ s.dependency "RCT-Folly"
41
+ s.dependency "RCTRequired"
42
+ s.dependency "RCTTypeSafety"
43
+ s.dependency "ReactCommon/turbomodule/core"
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,13 @@
1
+ //
2
+ // AppTrackingTransparency.h
3
+ // CloudXReactNative
4
+ //
5
+ // App Tracking Transparency module for iOS 14+
6
+ //
7
+
8
+ #import <React/RCTBridgeModule.h>
9
+
10
+ @interface AppTrackingTransparency : NSObject <RCTBridgeModule>
11
+
12
+ @end
13
+
@@ -0,0 +1,59 @@
1
+ //
2
+ // AppTrackingTransparency.m
3
+ // CloudXReactNative
4
+ //
5
+ // App Tracking Transparency module for iOS 14+
6
+ //
7
+
8
+ #import "AppTrackingTransparency.h"
9
+ #import <AppTrackingTransparency/AppTrackingTransparency.h>
10
+ #import <AdSupport/AdSupport.h>
11
+
12
+ @implementation AppTrackingTransparency
13
+
14
+ RCT_EXPORT_MODULE();
15
+
16
+ RCT_EXPORT_METHOD(requestTrackingAuthorization:(RCTPromiseResolveBlock)resolve
17
+ rejecter:(RCTPromiseRejectBlock)reject) {
18
+ if (@available(iOS 14, *)) {
19
+ ATTrackingManagerAuthorizationStatus currentStatus = [ATTrackingManager trackingAuthorizationStatus];
20
+
21
+ if (currentStatus == ATTrackingManagerAuthorizationStatusNotDetermined) {
22
+ [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
23
+ resolve([self statusToString:status]);
24
+ }];
25
+ } else {
26
+ resolve([self statusToString:currentStatus]);
27
+ }
28
+ } else {
29
+ resolve(@"not_required");
30
+ }
31
+ }
32
+
33
+ RCT_EXPORT_METHOD(getTrackingAuthorizationStatus:(RCTPromiseResolveBlock)resolve
34
+ rejecter:(RCTPromiseRejectBlock)reject) {
35
+ if (@available(iOS 14, *)) {
36
+ ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus];
37
+ resolve([self statusToString:status]);
38
+ } else {
39
+ resolve(@"not_required");
40
+ }
41
+ }
42
+
43
+ - (NSString *)statusToString:(ATTrackingManagerAuthorizationStatus)status API_AVAILABLE(ios(14)) {
44
+ switch (status) {
45
+ case ATTrackingManagerAuthorizationStatusAuthorized:
46
+ return @"authorized";
47
+ case ATTrackingManagerAuthorizationStatusDenied:
48
+ return @"denied";
49
+ case ATTrackingManagerAuthorizationStatusRestricted:
50
+ return @"restricted";
51
+ case ATTrackingManagerAuthorizationStatusNotDetermined:
52
+ return @"not_determined";
53
+ default:
54
+ return @"unknown";
55
+ }
56
+ }
57
+
58
+ @end
59
+
@@ -0,0 +1,51 @@
1
+ //
2
+ // RNCloudXBannerView.h
3
+ // cloudx-react-native
4
+ //
5
+
6
+ #import <React/RCTComponent.h>
7
+ #import <CloudXCore/CloudXCore.h>
8
+
9
+ /**
10
+ * Ad view position options for programmatic banner placement.
11
+ */
12
+ typedef NS_ENUM(NSInteger, RNCloudXAdViewPosition) {
13
+ RNCloudXAdViewPositionNone = 0,
14
+ RNCloudXAdViewPositionTopLeft,
15
+ RNCloudXAdViewPositionTopCenter,
16
+ RNCloudXAdViewPositionTopRight,
17
+ RNCloudXAdViewPositionCenterLeft,
18
+ RNCloudXAdViewPositionCentered,
19
+ RNCloudXAdViewPositionCenterRight,
20
+ RNCloudXAdViewPositionBottomLeft,
21
+ RNCloudXAdViewPositionBottomCenter,
22
+ RNCloudXAdViewPositionBottomRight
23
+ };
24
+
25
+ #ifdef RCT_NEW_ARCH_ENABLED
26
+ #import <React/RCTViewComponentView.h>
27
+ @interface RNCloudXBannerView : RCTViewComponentView <CLXBannerDelegate, CLXAdRevenueDelegate>
28
+ #else
29
+ #import <React/RCTView.h>
30
+ @interface RNCloudXBannerView : RCTView <CLXBannerDelegate, CLXAdRevenueDelegate>
31
+ #endif
32
+
33
+ @property (nonatomic, copy) NSString *placement;
34
+ @property (nonatomic, copy) NSString *adId;
35
+ @property (nonatomic, copy) NSString *bannerSize;
36
+ @property (nonatomic, copy) NSString *adPosition;
37
+ @property (nonatomic, copy) NSString *customData;
38
+ @property (nonatomic, assign) BOOL shouldLoad;
39
+ @property (nonatomic, assign) BOOL autoRefresh;
40
+
41
+ @property (nonatomic, copy) RCTDirectEventBlock onAdLoaded;
42
+ @property (nonatomic, copy) RCTDirectEventBlock onAdLoadFailed;
43
+ @property (nonatomic, copy) RCTDirectEventBlock onAdClicked;
44
+ @property (nonatomic, copy) RCTDirectEventBlock onAdExpanded;
45
+ @property (nonatomic, copy) RCTDirectEventBlock onAdCollapsed;
46
+ @property (nonatomic, copy) RCTDirectEventBlock onAdRevenuePaid;
47
+
48
+ - (void)loadAd;
49
+ - (void)destroyAd;
50
+
51
+ @end