cloudx-react-native 3.10.0 → 3.10.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 (103) hide show
  1. package/README.md +1 -0
  2. package/android/src/main/java/com/cloudxreactnative/CloudXAdEvents.kt +10 -0
  3. package/android/src/main/java/com/cloudxreactnative/CloudXAdInfo.kt +40 -0
  4. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdView.kt +718 -0
  5. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdViewManagerImpl.kt +119 -0
  6. package/android/src/main/java/com/cloudxreactnative/CloudXPackage.kt +4 -1
  7. package/android/src/main/res/layout/cloudx_rn_native_media_banner_template.xml +100 -0
  8. package/android/src/main/res/layout/cloudx_rn_native_medium_template.xml +99 -0
  9. package/android/src/main/res/layout/cloudx_rn_native_small_template.xml +72 -0
  10. package/android/src/main/res/layout/cloudx_rn_native_vertical_media_template.xml +117 -0
  11. package/android/src/newarch/com/cloudxreactnative/CloudXModule.kt +1 -0
  12. package/android/src/newarch/com/cloudxreactnative/CloudXNativeAdViewManager.kt +86 -0
  13. package/android/src/oldarch/com/cloudxreactnative/CloudXModule.kt +1 -0
  14. package/android/src/oldarch/com/cloudxreactnative/CloudXNativeAdViewManager.kt +118 -0
  15. package/ios/CloudX.h +8 -0
  16. package/ios/CloudX.mm +159 -29
  17. package/ios/CloudXNativeAdView.h +75 -0
  18. package/ios/CloudXNativeAdView.mm +979 -0
  19. package/ios/CloudXNativeAdViewManager.h +12 -0
  20. package/ios/CloudXNativeAdViewManager.mm +119 -0
  21. package/lib/commonjs/CloudXAdViewBase.js +8 -97
  22. package/lib/commonjs/CloudXAdViewBase.js.map +1 -1
  23. package/lib/commonjs/CloudXNativeAdView.js +331 -0
  24. package/lib/commonjs/CloudXNativeAdView.js.map +1 -0
  25. package/lib/commonjs/CloudXNativeAdViewComponents.js +252 -0
  26. package/lib/commonjs/CloudXNativeAdViewComponents.js.map +1 -0
  27. package/lib/commonjs/CloudXNativeAdViewProvider.js +117 -0
  28. package/lib/commonjs/CloudXNativeAdViewProvider.js.map +1 -0
  29. package/lib/commonjs/extraParameters.js +52 -0
  30. package/lib/commonjs/extraParameters.js.map +1 -0
  31. package/lib/commonjs/hooks.js +34 -0
  32. package/lib/commonjs/hooks.js.map +1 -1
  33. package/lib/commonjs/index.js +72 -0
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/specs/CloudXNativeAdViewNativeComponent.js +41 -0
  36. package/lib/commonjs/specs/CloudXNativeAdViewNativeComponent.js.map +1 -0
  37. package/lib/commonjs/types/NativeAd.js +70 -0
  38. package/lib/commonjs/types/NativeAd.js.map +1 -0
  39. package/lib/commonjs/types/index.js +13 -0
  40. package/lib/commonjs/types/index.js.map +1 -1
  41. package/lib/commonjs/useCloudXSdkInitialization.js +75 -0
  42. package/lib/commonjs/useCloudXSdkInitialization.js.map +1 -0
  43. package/lib/commonjs/version.js +1 -1
  44. package/lib/module/CloudXAdViewBase.js +7 -96
  45. package/lib/module/CloudXAdViewBase.js.map +1 -1
  46. package/lib/module/CloudXNativeAdView.js +324 -0
  47. package/lib/module/CloudXNativeAdView.js.map +1 -0
  48. package/lib/module/CloudXNativeAdViewComponents.js +240 -0
  49. package/lib/module/CloudXNativeAdViewComponents.js.map +1 -0
  50. package/lib/module/CloudXNativeAdViewProvider.js +110 -0
  51. package/lib/module/CloudXNativeAdViewProvider.js.map +1 -0
  52. package/lib/module/extraParameters.js +45 -0
  53. package/lib/module/extraParameters.js.map +1 -0
  54. package/lib/module/hooks.js +34 -0
  55. package/lib/module/hooks.js.map +1 -1
  56. package/lib/module/index.js +13 -0
  57. package/lib/module/index.js.map +1 -1
  58. package/lib/module/specs/CloudXNativeAdViewNativeComponent.js +35 -0
  59. package/lib/module/specs/CloudXNativeAdViewNativeComponent.js.map +1 -0
  60. package/lib/module/types/NativeAd.js +68 -0
  61. package/lib/module/types/NativeAd.js.map +1 -0
  62. package/lib/module/types/index.js +1 -0
  63. package/lib/module/types/index.js.map +1 -1
  64. package/lib/module/useCloudXSdkInitialization.js +68 -0
  65. package/lib/module/useCloudXSdkInitialization.js.map +1 -0
  66. package/lib/module/version.js +1 -1
  67. package/lib/typescript/src/CloudXAdViewBase.d.ts.map +1 -1
  68. package/lib/typescript/src/CloudXNativeAdView.d.ts +24 -0
  69. package/lib/typescript/src/CloudXNativeAdView.d.ts.map +1 -0
  70. package/lib/typescript/src/CloudXNativeAdViewComponents.d.ts +67 -0
  71. package/lib/typescript/src/CloudXNativeAdViewComponents.d.ts.map +1 -0
  72. package/lib/typescript/src/CloudXNativeAdViewProvider.d.ts +72 -0
  73. package/lib/typescript/src/CloudXNativeAdViewProvider.d.ts.map +1 -0
  74. package/lib/typescript/src/extraParameters.d.ts +4 -0
  75. package/lib/typescript/src/extraParameters.d.ts.map +1 -0
  76. package/lib/typescript/src/hooks.d.ts.map +1 -1
  77. package/lib/typescript/src/index.d.ts +4 -1
  78. package/lib/typescript/src/index.d.ts.map +1 -1
  79. package/lib/typescript/src/specs/CloudXNativeAdViewNativeComponent.d.ts +103 -0
  80. package/lib/typescript/src/specs/CloudXNativeAdViewNativeComponent.d.ts.map +1 -0
  81. package/lib/typescript/src/types/AdInfo.d.ts +4 -1
  82. package/lib/typescript/src/types/AdInfo.d.ts.map +1 -1
  83. package/lib/typescript/src/types/NativeAd.d.ts +114 -0
  84. package/lib/typescript/src/types/NativeAd.d.ts.map +1 -0
  85. package/lib/typescript/src/types/index.d.ts +2 -0
  86. package/lib/typescript/src/types/index.d.ts.map +1 -1
  87. package/lib/typescript/src/useCloudXSdkInitialization.d.ts +16 -0
  88. package/lib/typescript/src/useCloudXSdkInitialization.d.ts.map +1 -0
  89. package/lib/typescript/src/version.d.ts +1 -1
  90. package/package.json +1 -1
  91. package/src/CloudXAdViewBase.tsx +8 -125
  92. package/src/CloudXNativeAdView.tsx +419 -0
  93. package/src/CloudXNativeAdViewComponents.tsx +203 -0
  94. package/src/CloudXNativeAdViewProvider.tsx +149 -0
  95. package/src/extraParameters.ts +65 -0
  96. package/src/hooks.ts +38 -0
  97. package/src/index.ts +24 -0
  98. package/src/specs/CloudXNativeAdViewNativeComponent.ts +137 -0
  99. package/src/types/AdInfo.ts +5 -1
  100. package/src/types/NativeAd.ts +125 -0
  101. package/src/types/index.ts +7 -0
  102. package/src/useCloudXSdkInitialization.ts +73 -0
  103. package/src/version.ts +1 -1
package/README.md CHANGED
@@ -10,6 +10,7 @@ Full integration docs live in the public docs site. Keep setup guides, ad-format
10
10
  - Ad format guides:
11
11
  - [Banner and MREC ads](https://docs.cloudx.io/en/react-native/ad-formats/banner-mrec)
12
12
  - [Interstitial ads](https://docs.cloudx.io/en/react-native/ad-formats/interstitial)
13
+ - [Native ads](https://docs.cloudx.io/en/react-native/ad-formats/native)
13
14
  - [Rewarded ads](https://docs.cloudx.io/en/react-native/ad-formats/rewarded)
14
15
  - [React Native changelog](https://docs.cloudx.io/en/react-native/changelog)
15
16
 
@@ -52,4 +52,14 @@ object CloudXAdEvents {
52
52
  const val ON_REWARDED_AD_RECEIVED_REWARD_EVENT = "OnRewardedAdReceivedRewardEvent"
53
53
  const val ON_REWARDED_AD_REVENUE_PAID = "OnRewardedAdRevenuePaid"
54
54
 
55
+
56
+ // In-tree Native Ad View component (CloudXNativeAdView) per-view direct events.
57
+ // These strings are both the event key and the JS prop registrationName.
58
+ const val ON_NATIVE_AD_VIEW_LOADED_EVENT = "onAdLoadedEvent"
59
+ const val ON_NATIVE_AD_VIEW_LOAD_FAILED_EVENT = "onAdLoadFailedEvent"
60
+ const val ON_NATIVE_AD_VIEW_DISPLAY_FAILED_EVENT = "onAdDisplayFailedEvent"
61
+ const val ON_NATIVE_AD_VIEW_CLICKED_EVENT = "onAdClickedEvent"
62
+ const val ON_NATIVE_AD_VIEW_EXPIRED_EVENT = "onAdExpiredEvent"
63
+ const val ON_NATIVE_AD_VIEW_CLOSED_EVENT = "onAdClosedEvent"
64
+ const val ON_NATIVE_AD_VIEW_REVENUE_PAID_EVENT = "onAdRevenuePaidEvent"
55
65
  }
@@ -1,9 +1,12 @@
1
1
  package com.cloudxreactnative
2
2
 
3
+ import android.graphics.Bitmap
4
+ import android.util.Base64
3
5
  import com.facebook.react.bridge.Arguments
4
6
  import com.facebook.react.bridge.WritableMap
5
7
  import io.cloudx.sdk.CloudXAd
6
8
  import io.cloudx.sdk.CloudXError
9
+ import java.io.ByteArrayOutputStream
7
10
 
8
11
  fun getAdInfo(ad: CloudXAd): WritableMap {
9
12
  val map = Arguments.createMap()
@@ -15,9 +18,32 @@ fun getAdInfo(ad: CloudXAd): WritableMap {
15
18
  map.putString("creativeId", ad.creativeId ?: "")
16
19
  map.putDouble("revenue", ad.revenue)
17
20
  map.putMap("adValues", ad.adValues.toWritableMap())
21
+
18
22
  return map
19
23
  }
20
24
 
25
+ /**
26
+ * Icon encoding for CloudXNativeAdView's codegen-typed `nativeAdJson`
27
+ * direct-event field, which can't carry a nested WritableMap. Capped at 96px
28
+ * because the encoded string crosses the bridge on every native-ad callback.
29
+ */
30
+ internal fun bitmapToBase64Png(bitmap: Bitmap): String? {
31
+ val maxDimension = 96
32
+ val scaled = if (maxOf(bitmap.width, bitmap.height) > maxDimension) {
33
+ val scale = maxDimension.toFloat() / maxOf(bitmap.width, bitmap.height)
34
+ Bitmap.createScaledBitmap(bitmap, (bitmap.width * scale).toInt(), (bitmap.height * scale).toInt(), true)
35
+ } else {
36
+ bitmap
37
+ }
38
+ return try {
39
+ val stream = ByteArrayOutputStream()
40
+ scaled.compress(Bitmap.CompressFormat.PNG, 100, stream)
41
+ Base64.encodeToString(stream.toByteArray(), Base64.NO_WRAP)
42
+ } catch (oom: OutOfMemoryError) {
43
+ null
44
+ }
45
+ }
46
+
21
47
  fun Map<String, String>.toWritableMap(): WritableMap {
22
48
  val map = Arguments.createMap()
23
49
  for ((key, value) in this) {
@@ -41,6 +67,20 @@ fun getAdDisplayFailedInfo(ad: CloudXAd, error: CloudXError): WritableMap {
41
67
  return map
42
68
  }
43
69
 
70
+ /**
71
+ * Minimal `onAdDisplayFailed` payload for paths that have no loaded [CloudXAd]
72
+ * to describe (e.g. `renderNativeAd` called before `onAdLoaded`). Carries the
73
+ * same `{adUnitId, code, message}` shape as [getNoActivityDisplayFailedInfo]
74
+ * but with a real [CloudXError] instead of the sentinel -1 code.
75
+ */
76
+ fun getAdDisplayFailedInfo(adUnitId: String, error: CloudXError): WritableMap {
77
+ val map = Arguments.createMap()
78
+ map.putString("adUnitId", adUnitId)
79
+ map.putInt("code", error.code.code)
80
+ map.putString("message", error.message)
81
+ return map
82
+ }
83
+
44
84
  /**
45
85
  * Synthetic display-failure payload for the no-current-activity show path.
46
86
  * Mirrors the iOS no-view-controller payload ({adUnitId, code: -1, message})