react-native-netmera 1.11.3 → 2.0.0-alpha01

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 (280) hide show
  1. package/README.md +109 -120
  2. package/RNNetmera.podspec +30 -14
  3. package/android/build.gradle +83 -19
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +0 -5
  6. package/android/src/main/AndroidManifestNew.xml +5 -0
  7. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.kt +24 -0
  8. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.kt +54 -0
  9. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.kt +108 -0
  10. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.kt +24 -0
  11. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.kt +694 -0
  12. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.kt +17 -0
  13. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.kt +81 -0
  14. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.kt +32 -0
  15. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.kt +218 -0
  16. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.kt +25 -0
  17. package/ios/AnyCodable/AnyCodable.swift +151 -0
  18. package/ios/AnyCodable/AnyDecodable.swift +192 -0
  19. package/ios/AnyCodable/AnyEncodable.swift +295 -0
  20. package/ios/RNNetmera-Bridging-Header.h +3 -0
  21. package/ios/RNNetmera.mm +143 -0
  22. package/ios/RNNetmera.swift +759 -0
  23. package/ios/RNNetmeraCategoryObject.swift +61 -0
  24. package/ios/RNNetmeraEvent.swift +26 -0
  25. package/ios/RNNetmeraPushLifecycleDelegate.swift +47 -0
  26. package/ios/RNNetmeraRCTEventEmitter.mm +8 -0
  27. package/ios/RNNetmeraRCTEventEmitter.swift +134 -0
  28. package/ios/RNNetmeraUtils.swift +233 -0
  29. package/lib/module/Netmera.js +256 -0
  30. package/lib/module/Netmera.js.map +1 -0
  31. package/lib/module/events/NetmeraEvent.js +8 -0
  32. package/lib/module/events/NetmeraEvent.js.map +1 -0
  33. package/lib/module/events/NetmeraEventBannerOpen.js +13 -0
  34. package/lib/module/events/NetmeraEventBannerOpen.js.map +1 -0
  35. package/lib/module/events/NetmeraEventBatteryLevel.js +10 -0
  36. package/lib/module/events/NetmeraEventBatteryLevel.js.map +1 -0
  37. package/lib/module/events/NetmeraEventCategoryView.js +13 -0
  38. package/lib/module/events/NetmeraEventCategoryView.js.map +1 -0
  39. package/lib/module/events/NetmeraEventInAppPurchase.js +28 -0
  40. package/lib/module/events/NetmeraEventInAppPurchase.js.map +1 -0
  41. package/lib/module/events/NetmeraEventLogin.js +10 -0
  42. package/lib/module/events/NetmeraEventLogin.js.map +1 -0
  43. package/lib/module/events/NetmeraEventRegister.js +10 -0
  44. package/lib/module/events/NetmeraEventRegister.js.map +1 -0
  45. package/lib/module/events/NetmeraEventScreenView.js +22 -0
  46. package/lib/module/events/NetmeraEventScreenView.js.map +1 -0
  47. package/lib/module/events/NetmeraEventSearch.js +13 -0
  48. package/lib/module/events/NetmeraEventSearch.js.map +1 -0
  49. package/lib/module/events/NetmeraEventShare.js +13 -0
  50. package/lib/module/events/NetmeraEventShare.js.map +1 -0
  51. package/lib/module/events/commerce/NetmeraEventCartAddProduct.js +13 -0
  52. package/lib/module/events/commerce/NetmeraEventCartAddProduct.js.map +1 -0
  53. package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js +10 -0
  54. package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js.map +1 -0
  55. package/lib/module/events/commerce/NetmeraEventCartView.js +13 -0
  56. package/lib/module/events/commerce/NetmeraEventCartView.js.map +1 -0
  57. package/lib/module/events/commerce/NetmeraEventOrderCancel.js +19 -0
  58. package/lib/module/events/commerce/NetmeraEventOrderCancel.js.map +1 -0
  59. package/lib/module/events/commerce/NetmeraEventProductComment.js +7 -0
  60. package/lib/module/events/commerce/NetmeraEventProductComment.js.map +1 -0
  61. package/lib/module/events/commerce/NetmeraEventProductRate.js +10 -0
  62. package/lib/module/events/commerce/NetmeraEventProductRate.js.map +1 -0
  63. package/lib/module/events/commerce/NetmeraEventProductView.js +7 -0
  64. package/lib/module/events/commerce/NetmeraEventProductView.js.map +1 -0
  65. package/lib/module/events/commerce/NetmeraEventPurchase.js +34 -0
  66. package/lib/module/events/commerce/NetmeraEventPurchase.js.map +1 -0
  67. package/lib/module/events/commerce/NetmeraEventWishList.js +7 -0
  68. package/lib/module/events/commerce/NetmeraEventWishList.js.map +1 -0
  69. package/lib/module/events/commerce/NetmeraLineItem.js +9 -0
  70. package/lib/module/events/commerce/NetmeraLineItem.js.map +1 -0
  71. package/lib/module/events/commerce/NetmeraProduct.js +46 -0
  72. package/lib/module/events/commerce/NetmeraProduct.js.map +1 -0
  73. package/lib/module/events/media/NetmeraEventContent.js +42 -0
  74. package/lib/module/events/media/NetmeraEventContent.js.map +1 -0
  75. package/lib/module/events/media/NetmeraEventContentComment.js +7 -0
  76. package/lib/module/events/media/NetmeraEventContentComment.js.map +1 -0
  77. package/lib/module/events/media/NetmeraEventContentRate.js +10 -0
  78. package/lib/module/events/media/NetmeraEventContentRate.js.map +1 -0
  79. package/lib/module/events/media/NetmeraEventContentView.js +7 -0
  80. package/lib/module/events/media/NetmeraEventContentView.js.map +1 -0
  81. package/lib/module/index.js +43 -0
  82. package/lib/module/index.js.map +1 -0
  83. package/lib/module/models/NMCategoryPreference.js +8 -0
  84. package/lib/module/models/NMCategoryPreference.js.map +1 -0
  85. package/lib/module/models/NMInboxStatus.js +11 -0
  86. package/lib/module/models/NMInboxStatus.js.map +1 -0
  87. package/lib/module/models/NMInboxStatusCountFilter.js +12 -0
  88. package/lib/module/models/NMInboxStatusCountFilter.js.map +1 -0
  89. package/lib/module/models/NetmeraCategory.js +8 -0
  90. package/lib/module/models/NetmeraCategory.js.map +1 -0
  91. package/lib/module/models/NetmeraCategoryFilter.js +8 -0
  92. package/lib/module/models/NetmeraCategoryFilter.js.map +1 -0
  93. package/lib/module/models/NetmeraCouponObject.js +8 -0
  94. package/lib/module/models/NetmeraCouponObject.js.map +1 -0
  95. package/lib/module/models/NetmeraInbox.js +8 -0
  96. package/lib/module/models/NetmeraInbox.js.map +1 -0
  97. package/lib/module/models/NetmeraInboxFilter.js +8 -0
  98. package/lib/module/models/NetmeraInboxFilter.js.map +1 -0
  99. package/lib/module/models/NetmeraProfileAttribute.js +75 -0
  100. package/lib/module/models/NetmeraProfileAttribute.js.map +1 -0
  101. package/lib/module/models/NetmeraUser.js +89 -0
  102. package/lib/module/models/NetmeraUser.js.map +1 -0
  103. package/lib/module/models/NetmeraUserProfile.js +58 -0
  104. package/lib/module/models/NetmeraUserProfile.js.map +1 -0
  105. package/lib/module/models/NotificationPermissionStatus.js +10 -0
  106. package/lib/module/models/NotificationPermissionStatus.js.map +1 -0
  107. package/lib/module/package.json +1 -0
  108. package/lib/module/utils/DeviceUtils.js +10 -0
  109. package/lib/module/utils/DeviceUtils.js.map +1 -0
  110. package/lib/module/utils/Optional.js +32 -0
  111. package/lib/module/utils/Optional.js.map +1 -0
  112. package/lib/module/utils/RNNetmera.js +16 -0
  113. package/lib/module/utils/RNNetmera.js.map +1 -0
  114. package/lib/typescript/package.json +1 -0
  115. package/lib/typescript/src/Netmera.d.ts +70 -0
  116. package/lib/typescript/src/Netmera.d.ts.map +1 -0
  117. package/lib/typescript/src/events/NetmeraEvent.d.ts +5 -0
  118. package/lib/typescript/src/events/NetmeraEvent.d.ts.map +1 -0
  119. package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts +9 -0
  120. package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts.map +1 -0
  121. package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts +7 -0
  122. package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts.map +1 -0
  123. package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts +9 -0
  124. package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts.map +1 -0
  125. package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts +19 -0
  126. package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts.map +1 -0
  127. package/lib/typescript/src/events/NetmeraEventLogin.d.ts +7 -0
  128. package/lib/typescript/src/events/NetmeraEventLogin.d.ts.map +1 -0
  129. package/lib/typescript/src/events/NetmeraEventRegister.d.ts +7 -0
  130. package/lib/typescript/src/events/NetmeraEventRegister.d.ts.map +1 -0
  131. package/lib/typescript/src/events/NetmeraEventScreenView.d.ts +15 -0
  132. package/lib/typescript/src/events/NetmeraEventScreenView.d.ts.map +1 -0
  133. package/lib/typescript/src/events/NetmeraEventSearch.d.ts +9 -0
  134. package/lib/typescript/src/events/NetmeraEventSearch.d.ts.map +1 -0
  135. package/lib/typescript/src/events/NetmeraEventShare.d.ts +9 -0
  136. package/lib/typescript/src/events/NetmeraEventShare.d.ts.map +1 -0
  137. package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts +9 -0
  138. package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts.map +1 -0
  139. package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts +7 -0
  140. package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts.map +1 -0
  141. package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts +9 -0
  142. package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts.map +1 -0
  143. package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts +13 -0
  144. package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts.map +1 -0
  145. package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts +5 -0
  146. package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts.map +1 -0
  147. package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts +7 -0
  148. package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts.map +1 -0
  149. package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts +5 -0
  150. package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts.map +1 -0
  151. package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts +24 -0
  152. package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts.map +1 -0
  153. package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts +5 -0
  154. package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts.map +1 -0
  155. package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts +6 -0
  156. package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts.map +1 -0
  157. package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts +23 -0
  158. package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts.map +1 -0
  159. package/lib/typescript/src/events/media/NetmeraEventContent.d.ts +23 -0
  160. package/lib/typescript/src/events/media/NetmeraEventContent.d.ts.map +1 -0
  161. package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts +5 -0
  162. package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts.map +1 -0
  163. package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts +7 -0
  164. package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts.map +1 -0
  165. package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts +5 -0
  166. package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts.map +1 -0
  167. package/lib/typescript/src/index.d.ts +39 -0
  168. package/lib/typescript/src/index.d.ts.map +1 -0
  169. package/lib/typescript/src/models/NMCategoryPreference.d.ts +6 -0
  170. package/lib/typescript/src/models/NMCategoryPreference.d.ts.map +1 -0
  171. package/lib/typescript/src/models/NMInboxStatus.d.ts +8 -0
  172. package/lib/typescript/src/models/NMInboxStatus.d.ts.map +1 -0
  173. package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts +7 -0
  174. package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts.map +1 -0
  175. package/lib/typescript/src/models/NetmeraCategory.d.ts +10 -0
  176. package/lib/typescript/src/models/NetmeraCategory.d.ts.map +1 -0
  177. package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts +6 -0
  178. package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts.map +1 -0
  179. package/lib/typescript/src/models/NetmeraCouponObject.d.ts +8 -0
  180. package/lib/typescript/src/models/NetmeraCouponObject.d.ts.map +1 -0
  181. package/lib/typescript/src/models/NetmeraInbox.d.ts +22 -0
  182. package/lib/typescript/src/models/NetmeraInbox.d.ts.map +1 -0
  183. package/lib/typescript/src/models/NetmeraInboxFilter.d.ts +7 -0
  184. package/lib/typescript/src/models/NetmeraInboxFilter.d.ts.map +1 -0
  185. package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts +33 -0
  186. package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts.map +1 -0
  187. package/lib/typescript/src/models/NetmeraUser.d.ts +25 -0
  188. package/lib/typescript/src/models/NetmeraUser.d.ts.map +1 -0
  189. package/lib/typescript/src/models/NetmeraUserProfile.d.ts +21 -0
  190. package/lib/typescript/src/models/NetmeraUserProfile.d.ts.map +1 -0
  191. package/lib/typescript/src/models/NotificationPermissionStatus.d.ts +7 -0
  192. package/lib/typescript/src/models/NotificationPermissionStatus.d.ts.map +1 -0
  193. package/lib/typescript/src/utils/DeviceUtils.d.ts +3 -0
  194. package/lib/typescript/src/utils/DeviceUtils.d.ts.map +1 -0
  195. package/lib/typescript/src/utils/Optional.d.ts +15 -0
  196. package/lib/typescript/src/utils/Optional.d.ts.map +1 -0
  197. package/lib/typescript/src/utils/RNNetmera.d.ts +5 -0
  198. package/lib/typescript/src/utils/RNNetmera.d.ts.map +1 -0
  199. package/package.json +104 -17
  200. package/src/Netmera.ts +139 -88
  201. package/src/events/NetmeraEvent.ts +1 -1
  202. package/src/events/NetmeraEventBannerOpen.ts +4 -4
  203. package/src/events/NetmeraEventBatteryLevel.ts +3 -3
  204. package/src/events/NetmeraEventCategoryView.ts +4 -4
  205. package/src/events/NetmeraEventInAppPurchase.ts +10 -10
  206. package/src/events/NetmeraEventLogin.ts +3 -3
  207. package/src/events/NetmeraEventRegister.ts +3 -3
  208. package/src/events/NetmeraEventScreenView.ts +7 -7
  209. package/src/events/NetmeraEventSearch.ts +4 -4
  210. package/src/events/NetmeraEventShare.ts +4 -4
  211. package/src/events/commerce/NetmeraEventCartAddProduct.ts +4 -4
  212. package/src/events/commerce/NetmeraEventCartRemoveProduct.ts +3 -3
  213. package/src/events/commerce/NetmeraEventCartView.ts +4 -4
  214. package/src/events/commerce/NetmeraEventOrderCancel.ts +6 -6
  215. package/src/events/commerce/NetmeraEventProductComment.ts +2 -2
  216. package/src/events/commerce/NetmeraEventProductRate.ts +3 -3
  217. package/src/events/commerce/NetmeraEventProductView.ts +2 -2
  218. package/src/events/commerce/NetmeraEventPurchase.ts +13 -13
  219. package/src/events/commerce/NetmeraEventWishList.ts +2 -2
  220. package/src/events/commerce/NetmeraLineItem.ts +2 -2
  221. package/src/events/commerce/NetmeraProduct.ts +10 -10
  222. package/src/events/media/NetmeraEventContent.ts +8 -8
  223. package/src/events/media/NetmeraEventContentComment.ts +2 -2
  224. package/src/events/media/NetmeraEventContentRate.ts +3 -3
  225. package/src/events/media/NetmeraEventContentView.ts +2 -2
  226. package/src/index.ts +87 -0
  227. package/src/models/NMCategoryPreference.ts +1 -1
  228. package/src/models/NMInboxStatusCountFilter.ts +1 -1
  229. package/src/models/NetmeraCategory.ts +2 -2
  230. package/src/models/NetmeraCategoryFilter.ts +1 -1
  231. package/src/models/NetmeraCouponObject.ts +1 -1
  232. package/src/models/NetmeraInbox.ts +1 -1
  233. package/src/models/NetmeraInboxFilter.ts +1 -1
  234. package/src/models/NetmeraProfileAttribute.ts +81 -0
  235. package/src/models/NetmeraUser.ts +76 -74
  236. package/src/models/NetmeraUserProfile.ts +67 -0
  237. package/src/models/NotificationPermissionStatus.ts +4 -4
  238. package/src/utils/DeviceUtils.ts +3 -3
  239. package/src/utils/Optional.ts +31 -0
  240. package/src/utils/RNNetmera.ts +24 -0
  241. package/.eslintignore +0 -7
  242. package/.gitattributes +0 -1
  243. package/.github/workflows/code_quality_check.yaml +0 -38
  244. package/.prettierignore +0 -14
  245. package/.yarnrc.yml +0 -1
  246. package/android/.project +0 -17
  247. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  248. package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  249. package/android/gradlew +0 -172
  250. package/android/gradlew.bat +0 -84
  251. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.java +0 -24
  252. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.java +0 -56
  253. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.java +0 -154
  254. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.java +0 -36
  255. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.java +0 -631
  256. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.java +0 -35
  257. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.java +0 -86
  258. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.java +0 -32
  259. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUser.java +0 -24
  260. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.java +0 -354
  261. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.java +0 -27
  262. package/index.ts +0 -80
  263. package/ios/RNNetmera.h +0 -32
  264. package/ios/RNNetmera.m +0 -507
  265. package/ios/RNNetmera.xcodeproj/project.pbxproj +0 -316
  266. package/ios/RNNetmera.xcodeproj/xcshareddata/xcschemes/RNNetmera.xcscheme +0 -67
  267. package/ios/RNNetmera.xcworkspace/contents.xcworkspacedata +0 -9
  268. package/ios/RNNetmeraCategoryObject.h +0 -16
  269. package/ios/RNNetmeraCategoryObject.m +0 -59
  270. package/ios/RNNetmeraEvent.h +0 -17
  271. package/ios/RNNetmeraEvent.m +0 -27
  272. package/ios/RNNetmeraRCTEventEmitter.h +0 -23
  273. package/ios/RNNetmeraRCTEventEmitter.m +0 -142
  274. package/ios/RNNetmeraUser.h +0 -15
  275. package/ios/RNNetmeraUser.m +0 -19
  276. package/ios/RNNetmeraUtils.h +0 -27
  277. package/ios/RNNetmeraUtils.m +0 -128
  278. package/scripts/update-version.js +0 -38
  279. package/scripts/yarn_rebuild.sh +0 -31
  280. package/tsconfig.json +0 -3
package/README.md CHANGED
@@ -93,141 +93,114 @@ apply plugin: 'com.huawei.agconnect'
93
93
 
94
94
  ### Setup - iOS Part
95
95
 
96
- 1. Navigate to ios folder in your terminal and run the following command.
96
+ 1. Add the following post_install block to the end of your Podfile.
97
97
 
98
98
  ```
99
- $ pod install
99
+ post_install do |installer|
100
+ installer.pods_project.targets.each do |target|
101
+ if target.name.include?('Swinject')
102
+ target.build_configurations.each do |config|
103
+ config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
104
+ end
105
+ end
106
+ end
107
+ end
100
108
  ```
101
109
 
102
- 2. Download `GoogleService-Info.plist` file from Firebase and place it into ios/ folder.
110
+ 2. Navigate to ios folder in your terminal and run the following command.
103
111
 
104
- 3. Enable push notifications for your project
112
+ ```
113
+ $ pod install
114
+ ```
105
115
 
116
+ 3. Enable push notifications for your project
106
117
  1. If you have not generated a valid push notification certificate yet,
107
118
  generate one and then export by following the steps explained in [Configuring Push Notifications section of App Distribution Guide](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns#2947597)
108
119
  2. Export the generated push certificate in .p12 format and upload to Netmera Dashboard.
109
120
  3. Enable Push Notifications capability for your application as explained in [Enable Push Notifications](https://developer.netmera.com/en/IOS/Quick-Start#enable-push-notifications) guide.
110
121
  4. Enable Remote notifications background mode for your application as explained in [Configuring Background Modes](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app#2980038) guide.
111
122
 
112
- 4. If you want to use Android alike message sending from iOS to react native please consider shaping your AppDelegate class as following.
113
-
114
- #### AppDelegate.h
123
+ 4. Add the `Netmera-Config.plist` file to your ios/YOUR-APP directory.
115
124
 
116
125
  ```
117
- #import <React/RCTBridgeDelegate.h>
118
- #import <UIKit/UIKit.h>
119
- #import <Netmera/Netmera.h>
120
- #import <NetmeraCore/NetmeraPushObject.h>
121
- #import <UserNotifications/UserNotifications.h>
122
-
123
- @interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, UNUserNotificationCenterDelegate, NetmeraPushDelegate>
126
+ <?xml version="1.0" encoding="UTF-8"?>
127
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
128
+ <plist version="1.0">
129
+ <dict>
130
+ <key>sdk_params</key>
131
+ <dict>
132
+ <key>api_key</key>
133
+ <string>YOUR-API-KEY</string>
134
+ </dict>
135
+ </dict>
136
+ </plist>
137
+ ```
124
138
 
125
- @property (nonatomic, strong) UIWindow *window;
139
+ - If you are using Netmera on-premises, you must add your server URL as the base_url key inside sdk_params.
126
140
 
127
- @end
128
141
  ```
142
+ <?xml version="1.0" encoding="UTF-8"?>
143
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
144
+ <plist version="1.0">
145
+ <dict>
146
+ <key>sdk_params</key>
147
+ <dict>
148
+ ...
149
+ <key>base_url</key>
150
+ <string>YOUR-BASE-URL</string>
151
+ </dict>
152
+ </dict>
153
+ </plist>
154
+ ```
155
+
156
+ 5. If you want to use Android alike message sending from iOS to react native please consider shaping your AppDelegate class as following.
129
157
 
130
- #### AppDelegate.m
158
+ #### AppDelegate.swift
131
159
 
132
160
  - Add the following to the top of AppDelegate.m file.
133
161
 
134
162
  ```
135
- #import <RNNetmera/RNNetmeraRCTEventEmitter.h>
136
- #import <RNNetmera/RNNetmeraUtils.h>
137
- #import <RNNetmera/RNNetmera.h>
163
+ import RNNetmera
138
164
  ```
139
165
 
140
- - Add the following lines into the `didFinishLaunchingWithOptions` method.
166
+ - Add the following line into the `didFinishLaunchingWithOptions` method.
141
167
 
168
+ ```
169
+ RNNetmera.initNetmera()
142
170
  ```
143
171
 
144
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
145
- {
146
- // Add this line to set notification delegate
147
- [UNUserNotificationCenter currentNotificationCenter].delegate = self;
148
-
149
- ...
150
-
151
- // Add these lines to init Netmera
152
- [RNNetmera logging: YES]; // This is for enabling Netmera logs.
153
- [RNNetmera initNetmera:[<YOUR NETMERA API KEY>]]; // Replace this with your own NETMERA API KEY.
154
- [RNNetmera requestPushNotificationAuthorization];
155
- [RNNetmera setPushDelegate:self];
156
- [Netmera setAppGroupName:<YOUR APP GROUP NAME>]; // Set your app group name
172
+ 6. In order to use iOS10 Media Push, follow the instructions in [Netmera Product Hub.](https://user.netmera.com/netmera-developer-guide/platforms/ios/new-ios-swift/push-notifications/media-push) Differently, you should add the pods to the top of the `Podfile` as below.
157
173
 
158
- return YES;
159
- }
160
- ```
174
+ ```
175
+ // For receiving Media Push, you must add Netmera pods to top of your Podfile.
176
+ pod 'NetmeraNotificationServiceExtension', "4.15.0"
177
+ pod "NetmeraNotificationContentExtension", "4.15.0"
178
+ ```
161
179
 
162
- - Add these methods to between `@implementation AppDelegate` and `@end`.
180
+ 7. In order to use the widget URL callback, add these lines into `AppDelegate.swift` file.
163
181
 
164
182
  ```
165
- @implementation AppDelegate
183
+ import NetmeraNotification
166
184
 
167
185
  ...
168
-
169
- // MARK: Push Delegate Methods
170
-
171
- // Take push payload for Push clicked:
172
- -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
173
- {
174
- if ([response.actionIdentifier isEqual:UNNotificationDismissActionIdentifier]) {
175
- [RNNetmeraRCTEventEmitter onPushDismiss: @{@"userInfo" : response.notification.request.content.userInfo}];
176
- } else if ([response.actionIdentifier isEqual:UNNotificationDefaultActionIdentifier]) {
177
- [RNNetmeraRCTEventEmitter onPushOpen: @{@"userInfo" : response.notification.request.content.userInfo}];
186
+ override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
187
+ ...
188
+ Netmera.setPushDelegate(self)
189
+ ..
178
190
  }
179
- completionHandler();
180
- }
191
+ ...
181
192
 
182
- // Take push payload for push Received on application foreground:
183
- -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
184
- {
185
- completionHandler(UNNotificationPresentationOptionAlert);
186
- [RNNetmeraRCTEventEmitter onPushReceive: @{@"userInfo" : notification.request.content.userInfo}];
187
- }
193
+ extension AppDelegate: NetmeraPushDelegate {
194
+ func shouldHandleOpenURL(_ url: URL, for pushObject: NetmeraNotificationCore.NetmeraBasePush) -> Bool {
195
+ return false
196
+ }
188
197
 
189
- - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
190
- {
191
- if(deviceToken == nil) {
192
- return;
198
+ func handleOpenURL(_ url: URL, for pushObject: NetmeraNotificationCore.NetmeraBasePush) {
199
+ RNNetmeraRCTEventEmitter.handleOpenURL(url, forPushObject: pushObject)
193
200
  }
194
- [RNNetmeraRCTEventEmitter onPushRegister: @{@"pushToken" : deviceToken}];
195
201
  }
196
-
197
- @end
198
-
199
202
  ```
200
203
 
201
- For example if you trigger `[RNNetmeraRCTEventEmitter onPushReceive: @{@"userInfo" : notification.request.content.userInfo}]` from AppDelegate, in the react native part the following method will be triggered.
202
-
203
- ```
204
- export const onPushReceive = async (message) => {
205
- console.log("onPushReceive: ", message);
206
- };
207
- ```
208
-
209
- 4. In order to use iOS10 Media Push, follow the instructions in [Netmera Product Hub.](https://developer.netmera.com/en/IOS/Push-Notifications#using-ios10-media-push) Differently, you should add the pods to the top of the `Podfile` as below.
210
-
211
- ```
212
- // For receiving Media Push, you must add Netmera pods to top of your Podfile.
213
- pod "Netmera", "3.27.0-WithoutDependency"
214
- pod "Netmera/NotificationServiceExtension", "3.27.0-WithoutDependency"
215
- pod "Netmera/NotificationContentExtension", "3.27.0-WithoutDependency"
216
- ```
217
-
218
- 5. In order to use the widget URL callback, add these methods to between `@implementation AppDelegate` and `@end`.
219
-
220
- ```
221
- // Required code block to handle widget URL's in React Native
222
- - (BOOL)shouldHandleOpenURL:(NSURL *)url forPushObject:(NetmeraPushObject *)object {
223
- return NO;
224
- }
225
-
226
- - (void)handleOpenURL:(NSURL *)url forPushObject:(NetmeraPushObject *)object {
227
- [RNNetmeraRCTEventEmitter handleOpenURL:url forPushObject:object];
228
- }
229
- ```
230
-
231
204
  ### Setup - React Native Part
232
205
 
233
206
  1. Create a new `NetmeraPushHeadlessTask.ts` inside your React Native project.
@@ -359,40 +332,53 @@ HmsPushMessaging.setBackgroundMessageHandler(async dataMessage => {
359
332
 
360
333
  ### Calling React Native methods
361
334
 
362
- ##### Update User Example
335
+ ##### Identify User Example
363
336
 
364
337
  ```
365
- const updateUser = () => {
338
+ const identifyUser = () => {
366
339
  const user = new NetmeraUser();
367
340
  user.userId = <userId>;
368
- user.name = <name>;
369
- user.surname = <surname>;
341
+ user.email = <email>;
370
342
  user.msisdn = <msisdn>;
371
- user.gender = <gender>;
372
-
373
- // User update sync
374
- Netmera.updateUser(user)
375
- .then(() => {
376
- console.log('User updated successfully!');
377
- })
378
- .catch(error => {
379
- console.log(error.code, error.message);
380
- });
343
+ user.wpNumber = <whatsappNumber>;
344
+
345
+ // Identify user with callback
346
+ Netmera.identifyUser(user, (success, error) => {
347
+ if (success) {
348
+ console.log("User identified successfully")
349
+ } else {
350
+ console.error(error?.message)
351
+ }
352
+ });
353
+
354
+ // Identify user without callback
355
+ Netmera.identifyUser(user);
381
356
  }
382
357
  ```
383
358
 
359
+ ##### Update User Profile Example
360
+
384
361
  ```
385
- const updateUser = () => {
386
- const user = new NetmeraUser();
387
- user.userId = <userId>;
388
- user.name = <name>;
389
- user.surname = <surname>;
390
- user.msisdn = <msisdn>;
391
- user.gender = <gender>;
362
+ const sendUserProfileUpdate = () => {
363
+ const userProfile = new NetmeraUserProfile();
364
+ userProfile.name.set('John');
365
+ userProfile.surname.set('Doe');
366
+ userProfile.dateOfBirth.set(new Date().getTime());
367
+ userProfile.gender.set(Gender.MALE);
368
+ userProfile.externalSegments.set(['segment1', 'segment2']);
392
369
 
393
- // User update async
394
- Netmera.updateUserAsync(user);
395
- }
370
+ // Update user profile with callback
371
+ Netmera.updateUserProfile(userProfile, (success, error) => {
372
+ if (success) {
373
+ ...
374
+ } else {
375
+ ...
376
+ }
377
+ });
378
+
379
+ // Update user profile without callback
380
+ Netmera.updateUserProfile(userProfile);
381
+ };
396
382
  ```
397
383
 
398
384
  ##### Sending Event Examples
@@ -451,7 +437,10 @@ Note: Notification runtime permissions are required on Android 13 (API 33) or hi
451
437
  Therefore, before calling the method, make sure your project targets an API of 33 and above.
452
438
 
453
439
  ```
454
- Netmera.requestPushNotificationAuthorization();
440
+ Netmera.requestPushNotificationAuthorization()
441
+ .then((isGranted) => {
442
+ ...
443
+ });
455
444
  ```
456
445
 
457
446
  You can call the `checkNotificationPermission()` method if you need to know the status of permissions.
package/RNNetmera.podspec CHANGED
@@ -4,20 +4,36 @@ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
4
 
5
5
  Pod::Spec.new do |s|
6
6
  s.name = "RNNetmera"
7
- s.version = package["version"]
8
- s.summary = package["description"]
9
- s.description = <<-DESC
10
- RNNetmera
11
- DESC
12
- s.homepage = "https://github.com/author/RNNetmera.git"
13
- s.license = "MIT"
14
- s.author = { "author" => "author@domain.cn" }
15
- s.platforms = { :ios => "9.0" }
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.description = <<-DESC
10
+ RNNetmera
11
+ DESC
12
+ s.homepage = "https://github.com/author/RNNetmera.git"
13
+ s.license = "MIT"
14
+ s.author = { "author" => "author@domain.cn" }
15
+
16
+ s.platforms = { :ios => min_ios_version_supported }
16
17
  s.source = { :git => "https://github.com/author/RNNetmera.git", :tag => "master" }
17
- s.source_files = "ios/**/*.{h,c,cc,cpp,m,mm,swift}"
18
- s.requires_arc = true
19
18
 
20
- s.dependency 'React'
21
- s.dependency 'Netmera','3.27.3-WithoutDependency'
22
- end
19
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
20
+
21
+ netmera_version = '4.15.0'
23
22
 
23
+ s.dependency "NetmeraAnalytic", netmera_version
24
+ s.dependency "NetmeraAnalyticAutotracking", netmera_version
25
+ s.dependency "NetmeraLiveActivity", netmera_version
26
+ s.dependency "NetmeraNotification", netmera_version
27
+ s.dependency "NetmeraAdvertisingId", netmera_version
28
+ s.dependency "NetmeraLocation", netmera_version
29
+ s.dependency "NetmeraGeofence", netmera_version
30
+ s.dependency "NetmeraNotificationInbox", netmera_version
31
+
32
+ # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
33
+ # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
34
+ if respond_to?(:install_modules_dependencies, true)
35
+ install_modules_dependencies(s)
36
+ else
37
+ s.dependency "React-Core"
38
+ end
39
+ end
@@ -1,29 +1,93 @@
1
- apply plugin: 'com.android.library'
1
+ buildscript {
2
+ ext.getExtOrDefault = { name ->
3
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['NetmeraReactSdk_' + name]
4
+ }
5
+
6
+ repositories {
7
+ google()
8
+ mavenCentral()
9
+ }
10
+
11
+ dependencies {
12
+ classpath "com.android.tools.build:gradle:8.7.2"
13
+ // noinspection DifferentKotlinGradleVersion
14
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
15
+ }
16
+ }
17
+ rootProject.allprojects {
18
+ repositories {
19
+ google()
20
+ mavenCentral()
21
+ maven { url "https://release.netmera.com/release/android" }
22
+ }
23
+ }
24
+
25
+
26
+ apply plugin: "com.android.library"
27
+ apply plugin: "kotlin-android"
28
+
29
+
30
+ def getExtOrIntegerDefault(name) {
31
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NetmeraReactSdk_" + name]).toInteger()
32
+ }
33
+
34
+ def supportsNamespace() {
35
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
36
+ def major = parsed[0].toInteger()
37
+ def minor = parsed[1].toInteger()
38
+
39
+ // Namespace support was added in 7.3.0
40
+ return (major == 7 && minor >= 3) || major >= 8
41
+ }
2
42
 
3
43
  android {
4
- compileSdk 35
44
+ if (supportsNamespace()) {
45
+ namespace "com.netmera.reactnativesdk"
5
46
 
6
- // Conditional for compatibility with AGP <4.2.
7
- if (project.android.hasProperty("namespace")) {
8
- namespace "com.netmera.reactnativesdk"
47
+ sourceSets {
48
+ main {
49
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
50
+ }
9
51
  }
10
- defaultConfig {
11
- minSdkVersion 21
12
- targetSdkVersion 35
13
- versionCode 1
14
- versionName "1.0"
15
- }
16
- lintOptions {
17
- abortOnError false
52
+ }
53
+
54
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
55
+
56
+ defaultConfig {
57
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
58
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
59
+ }
60
+
61
+ buildTypes {
62
+ release {
63
+ minifyEnabled false
18
64
  }
65
+ }
66
+
67
+ lintOptions {
68
+ disable "GradleCompatible"
69
+ }
70
+
19
71
  }
20
72
 
73
+ repositories {
74
+ mavenCentral()
75
+ google()
76
+ }
77
+
78
+ def netmeraAndroidVersion = '4.13.3'
79
+
80
+ def kotlin_version = getExtOrDefault("kotlinVersion")
81
+
21
82
  dependencies {
22
- implementation 'com.netmera:nmcore:4.9.2'
23
- implementation 'com.netmera:nmfcm:4.6.1'
24
- implementation 'com.netmera:nmhms:4.6.1'
25
- implementation 'com.facebook.react:react-native:+'
83
+ implementation "com.netmera:nmcore:${netmeraAndroidVersion}"
84
+ implementation "com.netmera:nmfcm:${netmeraAndroidVersion}"
85
+ implementation "com.netmera:nmhms:${netmeraAndroidVersion}"
86
+ implementation 'com.facebook.react:react-native:+'
26
87
 
27
- implementation 'com.google.firebase:firebase-messaging:23.1.2'
28
- implementation 'com.huawei.hms:push:6.11.0.300'
88
+ implementation 'com.google.firebase:firebase-messaging:23.1.2'
89
+ implementation 'com.huawei.hms:push:6.11.0.300'
90
+ implementation "com.facebook.react:react-android"
91
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
29
92
  }
93
+
@@ -0,0 +1,5 @@
1
+ NetmeraReactSdk_kotlinVersion=2.0.21
2
+ NetmeraReactSdk_minSdkVersion=21
3
+ NetmeraReactSdk_targetSdkVersion=34
4
+ NetmeraReactSdk_compileSdkVersion=34
5
+ NetmeraReactSdk_ndkVersion=23.1.7779620
@@ -1,8 +1,3 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
2
  package="com.netmera.reactnativesdk">
4
- <application >
5
- <service android:name=".RNNetmeraPushHeadlessService" />
6
- </application>
7
3
  </manifest>
8
-
@@ -0,0 +1,5 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ <application >
3
+ <service android:name=".RNNetmeraPushHeadlessService" />
4
+ </application>
5
+ </manifest>
@@ -0,0 +1,24 @@
1
+ package com.netmera.reactnativesdk
2
+
3
+ import android.app.Application
4
+ import android.content.ContentValues
5
+ import com.netmera.NMActivityLifecycleCallbacks
6
+ import com.netmera.Netmera
7
+
8
+ object RNNetmera {
9
+ @JvmStatic
10
+ fun initNetmera(netmeraConfiguration: RNNetmeraConfiguration) {
11
+ val application = netmeraConfiguration.context.applicationContext as Application
12
+ application.registerActivityLifecycleCallbacks(NMActivityLifecycleCallbacks(application))
13
+ Netmera.init(netmeraConfiguration.getNetmeraConfiguration())
14
+ setNetmeraHeaders()
15
+ }
16
+
17
+ private fun setNetmeraHeaders() {
18
+ val headerValues = ContentValues().apply {
19
+ put("X-netmera-framework", "react")
20
+ put("X-netmera-frameworkV", "2.0.0")
21
+ }
22
+ Netmera.setNetmeraHeaders(headerValues)
23
+ }
24
+ }
@@ -0,0 +1,54 @@
1
+ package com.netmera.reactnativesdk
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.ReadableMap
5
+ import com.facebook.react.bridge.WritableArray
6
+ import com.facebook.react.bridge.WritableMap
7
+ import com.google.gson.Gson
8
+ import com.google.gson.JsonObject
9
+ import com.netmera.NetmeraCategory
10
+ import com.netmera.NetmeraCategoryFilter
11
+ import com.netmera.reactnativesdk.RNNetmeraUtil.mapPushObject
12
+
13
+ object RNNetmeraCategoryObject {
14
+ fun mapCategoryObjects(categoryObjects: MutableList<NetmeraCategory>): WritableArray {
15
+ val writableArray = Arguments.createArray()
16
+ for (category in categoryObjects) {
17
+ writableArray.pushMap(getCategoryObjectMap(category))
18
+ }
19
+ return writableArray
20
+ }
21
+
22
+ private fun getCategoryObjectMap(category: NetmeraCategory): WritableMap {
23
+ val map = Arguments.createMap()
24
+ map.putString("categoryName", category.categoryName)
25
+ map.putString("categoryStatus", Gson().toJson(category.status, JsonObject::class.java))
26
+ map.putInt("readCount", category.readCount)
27
+ map.putInt("unreadCount", category.unReadCount)
28
+ map.putInt("deletedCount", category.deletedCount)
29
+ map.putMap("lastMessage", mapPushObject(category.lastMessage))
30
+
31
+ return map
32
+ }
33
+
34
+ fun getInboxObject(map: ReadableMap): NetmeraCategoryFilter {
35
+ val builder = NetmeraCategoryFilter.Builder()
36
+
37
+ if (map.hasKey("status")) {
38
+ val status = map.getInt("status")
39
+ builder.status(status)
40
+ }
41
+
42
+ if (map.hasKey("pageSize")) {
43
+ val pageSize = map.getInt("pageSize")
44
+ builder.pageSize(pageSize)
45
+ }
46
+
47
+ if (map.hasKey("includeExpiredObjects")) {
48
+ val includeExpiredObjects = map.getBoolean("includeExpiredObjects")
49
+ builder.includeExpiredObjects(includeExpiredObjects)
50
+ }
51
+
52
+ return builder.build()
53
+ }
54
+ }
@@ -0,0 +1,108 @@
1
+ package com.netmera.reactnativesdk
2
+
3
+ import android.content.Context
4
+ import android.util.Log
5
+ import com.netmera.NetmeraConfiguration
6
+ import com.netmera.callbacks.NMInAppMessageActionCallbacks
7
+ import com.netmera.callbacks.NMPushActionCallbacks
8
+ import com.netmera.callbacks.NMWebWidgetCallbacks
9
+ import com.netmera.nmfcm.NMFCMProvider
10
+ import com.netmera.nmhms.NMHMSProvider
11
+ import java.util.Collections
12
+
13
+ class RNNetmeraConfiguration private constructor(
14
+ val nmInAppMessageActionCallbacks: NMInAppMessageActionCallbacks?,
15
+ val nmPushActionCallbacks: NMPushActionCallbacks?,
16
+ val nmWebWidgetCallbacks: NMWebWidgetCallbacks?,
17
+ val context: Context,
18
+ val baseUrl: String?,
19
+ val huaweiSenderId: String?,
20
+ val apiKey: String?,
21
+ val firebaseSenderId: String?,
22
+ val logging: Boolean,
23
+ val sslPinKeys: List<String>?
24
+ ) {
25
+
26
+ fun getNetmeraConfiguration(): NetmeraConfiguration {
27
+ val pushCallbacks = nmPushActionCallbacks ?: RNNetmeraPushBroadcastReceiver()
28
+ val webWidgetCallbacks = nmWebWidgetCallbacks ?: RNNetmeraWebWidgetCallbacks()
29
+
30
+ val builder = NetmeraConfiguration.Builder()
31
+
32
+ firebaseSenderId?.let { builder.firebaseSenderId(it) }
33
+ huaweiSenderId?.let { builder.huaweiSenderId(it) }
34
+ apiKey?.let { builder.apiKey(it) }
35
+ baseUrl?.let { builder.baseUrl(it) }
36
+ nmInAppMessageActionCallbacks?.let { builder.nmInAppMessageActionCallbacks(it) }
37
+ sslPinKeys?.let { builder.sslPinKeys(it) }
38
+
39
+ return builder
40
+ .logging(logging)
41
+ .disableSerializeRule(true)
42
+ .addProvider(NMFCMProvider())
43
+ .addProvider(NMHMSProvider())
44
+ .nmPushActionCallbacks(pushCallbacks)
45
+ .nmWebWidgetCallbacks(webWidgetCallbacks)
46
+ .build(context)
47
+ }
48
+
49
+ class Builder {
50
+ private var nmInAppMessageActionCallbacks: NMInAppMessageActionCallbacks? = null
51
+ private var nmPushActionCallbacks: NMPushActionCallbacks? = null
52
+ private var nmWebWidgetCallbacks: NMWebWidgetCallbacks? = null
53
+ private var context: Context? = null
54
+ private var baseUrl: String? = null
55
+ private var huaweiSenderId: String? = null
56
+ private var apiKey: String? = null
57
+ private var firebaseSenderId: String? = null
58
+ private var logging: Boolean = false
59
+ private var sslPinKeys: List<String>? = null
60
+
61
+ fun nmInAppMessageActionCallbacks(callbacks: NMInAppMessageActionCallbacks) = apply {
62
+ this.nmInAppMessageActionCallbacks = callbacks
63
+ }
64
+
65
+ fun nmPushActionCallbacks(callbacks: NMPushActionCallbacks) = apply {
66
+ this.nmPushActionCallbacks = callbacks
67
+ }
68
+
69
+ fun nmWebWidgetCallbacks(callbacks: NMWebWidgetCallbacks) = apply {
70
+ this.nmWebWidgetCallbacks = callbacks
71
+ }
72
+
73
+ fun baseUrl(baseUrl: String) = apply { this.baseUrl = baseUrl }
74
+
75
+ fun huaweiSenderId(huaweiSenderId: String) = apply { this.huaweiSenderId = huaweiSenderId }
76
+
77
+ fun apiKey(apiKey: String) = apply { this.apiKey = apiKey }
78
+
79
+ fun firebaseSenderId(firebaseSenderId: String) = apply { this.firebaseSenderId = firebaseSenderId }
80
+
81
+ fun logging(logging: Boolean) = apply { this.logging = logging }
82
+
83
+ fun sslPinKeys(sslPinKey: String) = apply {
84
+ this.sslPinKeys = Collections.singletonList(sslPinKey)
85
+ }
86
+
87
+ fun sslPinKeys(sslPinKeys: List<String>) = apply {
88
+ this.sslPinKeys = sslPinKeys
89
+ }
90
+
91
+ fun build(context: Context): RNNetmeraConfiguration {
92
+ this.context = context
93
+ return RNNetmeraConfiguration(
94
+ nmInAppMessageActionCallbacks,
95
+ nmPushActionCallbacks,
96
+ nmWebWidgetCallbacks,
97
+ context,
98
+ baseUrl,
99
+ huaweiSenderId,
100
+ apiKey,
101
+ firebaseSenderId,
102
+ logging,
103
+ sslPinKeys
104
+ )
105
+ }
106
+ }
107
+ }
108
+