clevertap-react-native 3.9.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/.claude/worktrees/ecstatic-goldberg/.claude/settings.local.json +12 -0
  2. package/.claude/worktrees/ecstatic-goldberg/.codebeatignore +1 -0
  3. package/.claude/worktrees/ecstatic-goldberg/.eslintrc.json +34 -0
  4. package/.claude/worktrees/ecstatic-goldberg/.vscode/settings.json +3 -0
  5. package/.claude/worktrees/ecstatic-goldberg/CHANGELOG.md +689 -0
  6. package/.claude/worktrees/ecstatic-goldberg/LICENSE +9 -0
  7. package/.claude/worktrees/ecstatic-goldberg/README.md +52 -0
  8. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/8.5/checksums/checksums.lock +0 -0
  9. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock +0 -0
  10. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/8.5/fileChanges/last-build.bin +0 -0
  11. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/8.5/fileHashes/fileHashes.lock +0 -0
  12. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/8.5/gc.properties +0 -0
  13. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  14. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  15. package/.claude/worktrees/ecstatic-goldberg/android/.gradle/vcs-1/gc.properties +0 -0
  16. package/.claude/worktrees/ecstatic-goldberg/android/build.gradle +63 -0
  17. package/.claude/worktrees/ecstatic-goldberg/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  18. package/.claude/worktrees/ecstatic-goldberg/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  19. package/.claude/worktrees/ecstatic-goldberg/android/gradle.properties +2 -0
  20. package/.claude/worktrees/ecstatic-goldberg/android/gradlew +160 -0
  21. package/.claude/worktrees/ecstatic-goldberg/android/gradlew.bat +90 -0
  22. package/{android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt → .claude/worktrees/ecstatic-goldberg/android/src/main}/AndroidManifest.xml +2 -7
  23. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapApplication.kt +12 -0
  24. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapCustomTemplates.kt +66 -0
  25. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapEvent.kt +42 -0
  26. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapEventEmitter.kt +128 -0
  27. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapListenerProxy.kt +225 -0
  28. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapModuleImpl.java +2112 -0
  29. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapPackage.kt +36 -0
  30. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapRnAPI.kt +35 -0
  31. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/CleverTapUtils.java +333 -0
  32. package/.claude/worktrees/ecstatic-goldberg/android/src/main/java/com/clevertap/react/Constants.kt +13 -0
  33. package/.claude/worktrees/ecstatic-goldberg/android/src/newarch/CleverTapModule.kt +622 -0
  34. package/.claude/worktrees/ecstatic-goldberg/android/src/oldarch/CleverTapModule.kt +716 -0
  35. package/.claude/worktrees/ecstatic-goldberg/clevertap-react-native.podspec +37 -0
  36. package/.claude/worktrees/ecstatic-goldberg/docs/CustomCodeTemplates.md +215 -0
  37. package/.claude/worktrees/ecstatic-goldberg/docs/Variables.md +191 -0
  38. package/.claude/worktrees/ecstatic-goldberg/docs/callbackPayloadFormat.md +26 -0
  39. package/.claude/worktrees/ecstatic-goldberg/docs/install.md +162 -0
  40. package/.claude/worktrees/ecstatic-goldberg/docs/integration.md +122 -0
  41. package/.claude/worktrees/ecstatic-goldberg/docs/iospushtemplates.md +582 -0
  42. package/.claude/worktrees/ecstatic-goldberg/docs/pushprimer.md +99 -0
  43. package/.claude/worktrees/ecstatic-goldberg/docs/usage.md +524 -0
  44. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReact.h +41 -0
  45. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReact.mm +1428 -0
  46. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactAppFunctionPresenter.h +20 -0
  47. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactAppFunctionPresenter.mm +21 -0
  48. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactCustomTemplates.h +42 -0
  49. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactCustomTemplates.mm +51 -0
  50. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactManager.h +14 -0
  51. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactManager.mm +168 -0
  52. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactPendingEvent.h +14 -0
  53. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactPendingEvent.mm +14 -0
  54. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactTemplatePresenter.h +22 -0
  55. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact/CleverTapReactTemplatePresenter.mm +21 -0
  56. package/.claude/worktrees/ecstatic-goldberg/ios/CleverTapReact.xcodeproj/project.pbxproj +371 -0
  57. package/.claude/worktrees/ecstatic-goldberg/package-lock.json +9891 -0
  58. package/.claude/worktrees/ecstatic-goldberg/package.json +57 -0
  59. package/.claude/worktrees/ecstatic-goldberg/src/NativeCleverTapModule.ts +252 -0
  60. package/.claude/worktrees/ecstatic-goldberg/src/index.d.ts +1031 -0
  61. package/.claude/worktrees/ecstatic-goldberg/src/index.js +1258 -0
  62. package/.claude/worktrees/ecstatic-goldberg/static/Finder.png +0 -0
  63. package/.claude/worktrees/ecstatic-goldberg/static/GenerateSpecs.png +0 -0
  64. package/.claude/worktrees/ecstatic-goldberg/static/NotificationContent.png +0 -0
  65. package/.claude/worktrees/ecstatic-goldberg/static/NotificationContentStoryboard.png +0 -0
  66. package/.claude/worktrees/ecstatic-goldberg/static/NotificationContentTarget.png +0 -0
  67. package/.claude/worktrees/ecstatic-goldberg/static/NotificationServiceTarget.png +0 -0
  68. package/.claude/worktrees/vigilant-davinci/.claude/settings.local.json +7 -0
  69. package/.claude/worktrees/vigilant-davinci/.codebeatignore +1 -0
  70. package/.claude/worktrees/vigilant-davinci/.eslintrc.json +34 -0
  71. package/.claude/worktrees/vigilant-davinci/.vscode/settings.json +3 -0
  72. package/.claude/worktrees/vigilant-davinci/CHANGELOG.md +702 -0
  73. package/.claude/worktrees/vigilant-davinci/LICENSE +9 -0
  74. package/.claude/worktrees/vigilant-davinci/README.md +52 -0
  75. package/.claude/worktrees/vigilant-davinci/android/.gradle/8.5/checksums/checksums.lock +0 -0
  76. package/.claude/worktrees/vigilant-davinci/android/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock +0 -0
  77. package/.claude/worktrees/vigilant-davinci/android/.gradle/8.5/dependencies-accessors/gc.properties +0 -0
  78. package/.claude/worktrees/vigilant-davinci/android/.gradle/8.5/fileChanges/last-build.bin +0 -0
  79. package/.claude/worktrees/vigilant-davinci/android/.gradle/8.5/fileHashes/fileHashes.lock +0 -0
  80. package/.claude/worktrees/vigilant-davinci/android/.gradle/8.5/gc.properties +0 -0
  81. package/.claude/worktrees/vigilant-davinci/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  82. package/.claude/worktrees/vigilant-davinci/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  83. package/.claude/worktrees/vigilant-davinci/android/.gradle/vcs-1/gc.properties +0 -0
  84. package/.claude/worktrees/vigilant-davinci/android/build.gradle +63 -0
  85. package/.claude/worktrees/vigilant-davinci/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  86. package/.claude/worktrees/vigilant-davinci/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  87. package/.claude/worktrees/vigilant-davinci/android/gradle.properties +2 -0
  88. package/.claude/worktrees/vigilant-davinci/android/gradlew +160 -0
  89. package/.claude/worktrees/vigilant-davinci/android/gradlew.bat +90 -0
  90. package/{android/build/intermediates/merged_manifest/debug → .claude/worktrees/vigilant-davinci/android/src/main}/AndroidManifest.xml +2 -7
  91. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapApplication.kt +12 -0
  92. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapCustomTemplates.kt +66 -0
  93. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapEvent.kt +42 -0
  94. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapEventEmitter.kt +128 -0
  95. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapListenerProxy.kt +225 -0
  96. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapModuleImpl.java +2139 -0
  97. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapPackage.kt +36 -0
  98. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapRnAPI.kt +35 -0
  99. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/CleverTapUtils.java +333 -0
  100. package/.claude/worktrees/vigilant-davinci/android/src/main/java/com/clevertap/react/Constants.kt +13 -0
  101. package/.claude/worktrees/vigilant-davinci/android/src/newarch/CleverTapModule.kt +622 -0
  102. package/.claude/worktrees/vigilant-davinci/android/src/oldarch/CleverTapModule.kt +716 -0
  103. package/.claude/worktrees/vigilant-davinci/clevertap-react-native.podspec +37 -0
  104. package/.claude/worktrees/vigilant-davinci/docs/CustomCodeTemplates.md +215 -0
  105. package/.claude/worktrees/vigilant-davinci/docs/Variables.md +191 -0
  106. package/.claude/worktrees/vigilant-davinci/docs/callbackPayloadFormat.md +26 -0
  107. package/.claude/worktrees/vigilant-davinci/docs/install.md +162 -0
  108. package/.claude/worktrees/vigilant-davinci/docs/integration.md +122 -0
  109. package/.claude/worktrees/vigilant-davinci/docs/iospushtemplates.md +582 -0
  110. package/.claude/worktrees/vigilant-davinci/docs/pushprimer.md +99 -0
  111. package/.claude/worktrees/vigilant-davinci/docs/usage.md +524 -0
  112. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReact.h +41 -0
  113. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReact.mm +1428 -0
  114. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactAppFunctionPresenter.h +20 -0
  115. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactAppFunctionPresenter.mm +21 -0
  116. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactCustomTemplates.h +42 -0
  117. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactCustomTemplates.mm +51 -0
  118. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactManager.h +14 -0
  119. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactManager.mm +168 -0
  120. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactPendingEvent.h +14 -0
  121. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactPendingEvent.mm +14 -0
  122. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactTemplatePresenter.h +22 -0
  123. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact/CleverTapReactTemplatePresenter.mm +21 -0
  124. package/.claude/worktrees/vigilant-davinci/ios/CleverTapReact.xcodeproj/project.pbxproj +371 -0
  125. package/.claude/worktrees/vigilant-davinci/package-lock.json +9891 -0
  126. package/.claude/worktrees/vigilant-davinci/package.json +57 -0
  127. package/.claude/worktrees/vigilant-davinci/src/NativeCleverTapModule.ts +252 -0
  128. package/.claude/worktrees/vigilant-davinci/src/index.d.ts +1031 -0
  129. package/.claude/worktrees/vigilant-davinci/src/index.js +1270 -0
  130. package/.claude/worktrees/vigilant-davinci/static/Finder.png +0 -0
  131. package/.claude/worktrees/vigilant-davinci/static/GenerateSpecs.png +0 -0
  132. package/.claude/worktrees/vigilant-davinci/static/NotificationContent.png +0 -0
  133. package/.claude/worktrees/vigilant-davinci/static/NotificationContentStoryboard.png +0 -0
  134. package/.claude/worktrees/vigilant-davinci/static/NotificationContentTarget.png +0 -0
  135. package/.claude/worktrees/vigilant-davinci/static/NotificationServiceTarget.png +0 -0
  136. package/CHANGELOG.md +13 -0
  137. package/android/.gradle/8.5/checksums/checksums.lock +0 -0
  138. package/android/{build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i → .gradle/8.5/checksums/sha1-checksums.bin} +0 -0
  139. package/android/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock +0 -0
  140. package/android/.gradle/8.5/fileHashes/fileHashes.lock +0 -0
  141. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  142. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  143. package/android/build.gradle +3 -3
  144. package/clevertap-react-native.podspec +1 -1
  145. package/docs/install.md +1 -1
  146. package/ios/CleverTapReact/CleverTapReactManager.mm +8 -0
  147. package/package.json +1 -1
  148. package/src/index.js +1 -1
  149. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  150. package/android/build/generated/source/buildConfig/debug/com/clevertap/react/BuildConfig.java +0 -12
  151. package/android/build/generated/source/codegen/java/com/clevertap/react/NativeCleverTapModuleSpec.java +0 -582
  152. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -49
  153. package/android/build/generated/source/codegen/jni/CTTurboModuleSpec-generated.cpp +0 -764
  154. package/android/build/generated/source/codegen/jni/CTTurboModuleSpec.h +0 -31
  155. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/CTTurboModuleSpecJSI-generated.cpp +0 -1035
  156. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/CTTurboModuleSpecJSI.h +0 -1161
  157. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/ComponentDescriptors.cpp +0 -22
  158. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/ComponentDescriptors.h +0 -24
  159. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/EventEmitters.cpp +0 -16
  160. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/EventEmitters.h +0 -17
  161. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/Props.cpp +0 -19
  162. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/Props.h +0 -18
  163. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/ShadowNodes.cpp +0 -17
  164. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/ShadowNodes.h +0 -23
  165. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/States.cpp +0 -16
  166. package/android/build/generated/source/codegen/jni/react/renderer/components/CTTurboModuleSpec/States.h +0 -21
  167. package/android/build/generated/source/codegen/schema.json +0 -3695
  168. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +0 -18
  169. package/android/build/intermediates/aar_main_jar/debug/classes.jar +0 -0
  170. package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +0 -6
  171. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
  172. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  173. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  174. package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -7705
  175. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  176. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  177. package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  178. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  179. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  180. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  181. package/android/build/intermediates/java_res/debug/out/META-INF/clevertap-react-native_debug.kotlin_module +0 -0
  182. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/BuildConfig.class +0 -0
  183. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$1.class +0 -0
  184. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$10.class +0 -0
  185. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$2.class +0 -0
  186. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$3.class +0 -0
  187. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$4.class +0 -0
  188. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$5.class +0 -0
  189. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$6.class +0 -0
  190. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$7.class +0 -0
  191. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$8.class +0 -0
  192. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$9.class +0 -0
  193. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$InBoxMessages.class +0 -0
  194. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl$TemplateContextAction.class +0 -0
  195. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModuleImpl.class +0 -0
  196. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapUtils$1.class +0 -0
  197. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapUtils$MapUtil$ArrayUtil.class +0 -0
  198. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapUtils$MapUtil.class +0 -0
  199. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapUtils.class +0 -0
  200. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/NativeCleverTapModuleSpec.class +0 -0
  201. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -2
  202. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -14
  203. package/android/build/intermediates/merged_java_res/debug/feature-clevertap-react-native.jar +0 -0
  204. package/android/build/intermediates/navigation_json/debug/navigation.json +0 -1
  205. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  206. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -5786
  207. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  208. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  209. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  210. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  211. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  212. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  213. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  214. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  215. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  216. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  217. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  218. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  219. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  220. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  221. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  222. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  223. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  224. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  225. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  226. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  227. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  228. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  229. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  230. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  231. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  232. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  233. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  234. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  235. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  236. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  237. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  238. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  239. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  240. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  241. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  242. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab +0 -0
  243. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream +0 -0
  244. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream.len +0 -0
  245. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.len +0 -0
  246. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.values.at +0 -0
  247. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i +0 -0
  248. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i.len +0 -0
  249. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  250. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  251. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  252. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  253. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  254. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  255. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  256. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  257. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  258. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  259. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  260. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  261. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  262. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  263. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  264. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  265. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  266. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  267. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  268. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  269. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  270. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  271. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  272. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  273. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  274. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  275. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  276. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  277. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  278. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  279. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  280. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  281. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  282. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  283. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  284. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  285. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  286. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  287. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  288. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  289. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  290. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  300. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  301. package/android/build/outputs/aar/clevertap-react-native-debug.aar +0 -0
  302. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -17
  303. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  304. package/android/build/tmp/kotlin-classes/debug/META-INF/clevertap-react-native_debug.kotlin_module +0 -0
  305. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapApplication.class +0 -0
  306. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapCustomTemplates$templatePresenter$1.class +0 -0
  307. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapCustomTemplates.class +0 -0
  308. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapEvent$Companion.class +0 -0
  309. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapEvent.class +0 -0
  310. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapEventEmitter$Buffer$items$2.class +0 -0
  311. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapEventEmitter$Buffer.class +0 -0
  312. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapEventEmitter.class +0 -0
  313. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapListenerProxy.class +0 -0
  314. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapModule$Companion.class +0 -0
  315. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapModule.class +0 -0
  316. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapPackage.class +0 -0
  317. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/CleverTapRnAPI.class +0 -0
  318. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/Constants.class +0 -0
  319. package/android/build/tmp/kotlin-classes/debug/com/clevertap/react/ErrorMessages.class +0 -0
  320. package/android/local.properties +0 -8
  321. /package/{android/build/intermediates/annotations_typedef_file/debug/typedefs.txt → .claude/worktrees/ecstatic-goldberg/android/.gradle/8.5/dependencies-accessors/gc.properties} +0 -0
@@ -0,0 +1,582 @@
1
+ # iOS Push Templates integration with React Native
2
+
3
+ CleverTap Push Templates SDK helps you engage with your users using fancy push notification templates built specifically to work with [CleverTap](https://eu1.dashboard.clevertap.com/login.html).
4
+
5
+ # Table of contents
6
+
7
+ - [Notification Service](#notification-service)
8
+ - [Notification Content](#notification-content)
9
+ - [Dashboard Usage](#dashboard-usage)
10
+ - [Template Types](#template-types)
11
+ - [Template Keys](#template-keys)
12
+
13
+ # Notification Service
14
+
15
+ [(Back to top)](#table-of-contents)
16
+ ## Installation
17
+ - Go to File -> New -> Target -> Notification Service Extension and select Objective-C language
18
+
19
+ ![NotificationServiceTarget](https://github.com/CleverTap/clevertap-react-native/blob/master/static/NotificationServiceTarget.png)
20
+ - Update Podfile as below and do `pod install`, refer [example](https://github.com/CleverTap/clevertap-react-native/blob/master/Example/ios/Podfile) for detailed Podfile.
21
+ ```
22
+ target 'NotificationService' do
23
+ pod "CTNotificationService", :modular_headers => true
24
+ end
25
+ ```
26
+ - Update your `NotificationService.h` as:
27
+ ```
28
+ #import <CTNotificationService/CTNotificationService.h>
29
+
30
+ @interface NotificationService : CTNotificationServiceExtension
31
+ @end
32
+ ```
33
+ - Update your `NotificationService.m` file as:
34
+ ```
35
+ #import "NotificationService.h"
36
+
37
+ @implementation NotificationService
38
+
39
+ - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
40
+ [super didReceiveNotificationRequest:request withContentHandler:contentHandler];
41
+ }
42
+
43
+ @end
44
+ ```
45
+
46
+ ## Push Impression
47
+ - Add `pod "CleverTap-iOS-SDK" ` in podfile for notification service target as do `pod install`:
48
+ ```
49
+ target 'NotificationService' do
50
+ pod "CleverTap-iOS-SDK", :modular_headers => true
51
+ pod "CTNotificationService", :modular_headers => true
52
+ end
53
+ ```
54
+ - Add CleverTap Account Id and Token in target `Info.plist` file as updated [here](https://github.com/CleverTap/clevertap-react-native/tree/master/Example/ios/Example/NotificationService/Info.plist)
55
+ - Update your `NotificationService.m` file as:
56
+ ```
57
+ #import "NotificationService.h"
58
+ #import <CleverTap-iOS-SDK/CleverTap.h>
59
+
60
+ @implementation NotificationService
61
+
62
+ - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
63
+ // Add CleverTap Account ID and Account token in your target .plist file
64
+ [CleverTap setDebugLevel:2];
65
+ NSDictionary *profile = @{
66
+ @"Name": @"testUserA1",
67
+ @"Identity": @123456,
68
+ @"Email": @"test@test.com"
69
+ };
70
+ [[CleverTap sharedInstance] profilePush:profile];
71
+ [[CleverTap sharedInstance] recordNotificationViewedEventWithData: request.content.userInfo];
72
+
73
+ [super didReceiveNotificationRequest:request withContentHandler:contentHandler];
74
+ }
75
+
76
+ @end
77
+ ```
78
+
79
+ - Refer [example](https://github.com/CleverTap/clevertap-react-native/tree/master/Example/ios/Example/NotificationService) for more details if you are using Objective-C language for the target.
80
+
81
+ ## Add Notification Service target using Swift language
82
+ - Go to File -> New -> Target -> Notification Service Extension and select Swift language
83
+ - Update Podfile as below and `pod install`:
84
+ ```
85
+ target 'NotificationService' do
86
+ pod "CTNotificationService", :modular_headers => true
87
+ end
88
+ ```
89
+ - Update your `NotificationService.swift` as
90
+ ```
91
+ import CTNotificationService
92
+
93
+ class NotificationService: CTNotificationServiceExtension {
94
+ override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
95
+ super.didReceive(request, withContentHandler: contentHandler)
96
+ }
97
+ }
98
+ ```
99
+
100
+ ## Push Impression using Swift language target
101
+ - Add `pod "CleverTap-iOS-SDK" ` in podfile for notification service target and do `pod install` as
102
+ ```
103
+ target 'NotificationService' do
104
+ pod "CleverTap-iOS-SDK", :modular_headers => true
105
+ pod "CTNotificationService", :modular_headers => true
106
+ end
107
+ ```
108
+ - Add CleverTap Account Id and Token in target `Info.plist` file as updated [here](https://github.com/CleverTap/clevertap-react-native/tree/master/Example/ios/Example/NotificationService/Info.plist)
109
+ - Update your `NotificationService.swift` file as:
110
+ ```
111
+ import CTNotificationService
112
+ import CleverTapSDK
113
+
114
+ class NotificationService: CTNotificationServiceExtension {
115
+ override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
116
+ let profile: Dictionary<String, AnyObject> = [
117
+ "Name": "testUserA1" as AnyObject,
118
+ "Identity": 123456 as AnyObject,
119
+ "Email": "test@test.com" as AnyObject ]
120
+ CleverTap.sharedInstance()?.profilePush(profile)
121
+ CleverTap.sharedInstance()?.recordNotificationViewedEvent(withData: request.content.userInfo)
122
+ super.didReceive(request, withContentHandler: contentHandler)
123
+ }
124
+ }
125
+ ```
126
+
127
+ # Notification Content
128
+
129
+ [(Back to top)](#table-of-contents)
130
+
131
+ Add Notification Content Extension (Push Templates) in a React Native iOS Project
132
+ Notification Content Extension is an app extension that provides a custom interface when a user previews your notification in the notification center. To enable the functionality of CleverTap iOS Push templates, we need this extension in the project which act as subclass to our CTNotificationContent framework.
133
+
134
+ ## Installation
135
+ - Open Example.xcodeproj (or your app’s .xcodeproj file) in the ios folder of React Native project.
136
+ - Go to File > New > Target… and search with the name “Notification Content Extension“
137
+
138
+ ![NotificationContentTarget](https://github.com/CleverTap/clevertap-react-native/blob/task/SDK-2395-RN-pushtemplates-support/static/NotificationContentTarget.png)
139
+
140
+ - Add “Notification Content“ as target name.
141
+
142
+ ![NotificationContent](https://github.com/CleverTap/clevertap-react-native/blob/task/SDK-2395-RN-pushtemplates-support/static/NotificationContent.png)
143
+
144
+ - Refer to https://github.com/CleverTap/CTNotificationContent#-setup for setting up Notification Content target so that it imports CTNotificationContent framework in the code. Make sure to add the necessary key-values in the Info.plist file of NotificationContent target so that it recognises the identifier of the incoming notification.
145
+
146
+ Alternatively, go to finder and replace newly created NotificationContent (or your content extension) folder with the NotificationContent folder in CTNotificationContent Example project repository.
147
+
148
+ ![Finder](https://github.com/CleverTap/clevertap-react-native/blob/task/SDK-2395-RN-pushtemplates-support/static/Finder.png)
149
+
150
+ - Add the following to a file named Podfile in the ios directory of your project.
151
+ ```
152
+ target 'NotificationContent' do
153
+ pod 'CTNotificationContent'
154
+ end
155
+ ```
156
+
157
+ The final Podfile should look something like this:
158
+ ```
159
+ require_relative '../node_modules/react-native/scripts/react_native_pods'
160
+ require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
161
+
162
+ platform :ios, '10.0'
163
+
164
+ use_frameworks!
165
+ target 'NotificationContent' do
166
+ pod 'CTNotificationContent'
167
+ end
168
+
169
+ target 'Example' do
170
+
171
+ config = use_native_modules!
172
+
173
+ use_react_native!(:path => config["reactNativePath"])
174
+
175
+ pod 'RNReanimated', :path => '../node_modules/react-native-reanimated'
176
+ pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
177
+
178
+ post_install do |installer|
179
+ react_native_post_install(installer)
180
+ # Apple Silicon builds require a library path tweak for Swift library discovery or "symbol not found" for swift things
181
+ installer.aggregate_targets.each do |aggregate_target|
182
+ aggregate_target.user_project.native_targets.each do |target|
183
+ target.build_configurations.each do |config|
184
+ config.build_settings['LIBRARY_SEARCH_PATHS'] = ['$(SDKROOT)/usr/lib/swift', '$(inherited)']
185
+ end
186
+ end
187
+ aggregate_target.user_project.save
188
+ end
189
+ end
190
+ end
191
+ ```
192
+ Now run the command pod install again. This will download and configure CTNotificationContent(iOS push templates) in your project.
193
+ ```
194
+ For React Native 0.69 or below you need to change the build phase order so that React Native can use the iOS framework added with the help of podfile
195
+ Please check your React-Native version of the project before proceeding further. Go to package.json file in your project and check react-native key and check for the version.
196
+
197
+ If the react native version of your project is below 0.69 you need to drag the Generate Specs above Headers as explained below.
198
+ ```
199
+ ## For React Native version 0.69 or below:
200
+
201
+ Open Example.xcworkspace (or your app’s .xcworkspace file). Go to the Pods section in Xcode -> select FBReactNativeSpec -> Build Phases -> drag Generate Specs above Headers .
202
+ ![GenerateSpecs](https://github.com/CleverTap/clevertap-react-native/blob/task/SDK-2395-RN-pushtemplates-support/static/GenerateSpecs.png)
203
+
204
+ ## For React Native version 0.70 or above:
205
+
206
+ We must disable "hermes" and "flipper" from the Podfile since we are using use_frameworks and this causes build issues if both of them are enabled.
207
+
208
+ Please observe that hermes_enabled is set from its default true state to false by adding :hermes_enabled => false inside use_react_native! snippet.
209
+ The podfile mentions this in comments:
210
+ ```
211
+ Note that if you have use_frameworks! enabled, Flipper will not work and
212
+ # you should disable the next line.
213
+ ```
214
+ so we have added a # to comment the line
215
+ ```
216
+ :flipper_configuration => FlipperConfiguration.enabled
217
+ ```
218
+ The new Podfile should look like this:
219
+ ```
220
+ require_relative '../node_modules/react-native/scripts/react_native_pods'
221
+ require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
222
+ platform :ios, '12.4'
223
+ install! 'cocoapods', :deterministic_uuids => false
224
+ use_frameworks!
225
+ target 'NotificationContent' do
226
+ pod 'CTNotificationContent'
227
+ end
228
+ target 'reactnativedemo' do
229
+ config = use_native_modules!
230
+ # Flags change depending on the env values.
231
+ flags = get_default_flags()
232
+ use_react_native!(
233
+ :path => config[:reactNativePath],
234
+ # Hermes is now enabled by default. Disable by setting this flag to false.
235
+ # Upcoming versions of React Native may rely on get_default_flags(), but
236
+ # we make it explicit here to aid in the React Native upgrade process.
237
+ :hermes_enabled => false,
238
+ :fabric_enabled => flags[:fabric_enabled],
239
+ # Enables Flipper.
240
+ #
241
+ # Note that if you have use_frameworks! enabled, Flipper will not work and
242
+ # you should disable the next line.
243
+ # :flipper_configuration => FlipperConfiguration.enabled,
244
+ # An absolute path to your application root.
245
+ :app_path => "#{Pod::Config.instance.installation_root}/.."
246
+ )
247
+ post_install do |installer|
248
+ react_native_post_install(
249
+ installer,
250
+ # Set `mac_catalyst_enabled` to `true` in order to apply patches
251
+ # necessary for Mac Catalyst builds
252
+ :mac_catalyst_enabled => false
253
+ )
254
+ __apply_Xcode_12_5_M1_post_install_workaround(installer)
255
+ end
256
+ end
257
+ ```
258
+
259
+ - Edit the Maininterface.storyboard in your NotificationContent target to a plain UIView. Steps:
260
+ MainInterface.storyboard -> Expand View -> Click Label -> Delete
261
+
262
+ ![NotificationContentStoryboard](https://github.com/CleverTap/clevertap-react-native/blob/master/static/NotificationContentStoryboard.png)
263
+
264
+ - Update NotificationViewController.h, NotificationViewController.m and Info.plist as updated in [example app](https://github.com/CleverTap/clevertap-react-native/tree/master/Example/ios/Example/NotificationContent)
265
+ - Set Notification categories from AppDelegate if you want to add category buttons in `didFinishLaunchingWithOptions:` method and add import `#import <UserNotifications/UserNotifications.h>`:
266
+ ```
267
+ UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
268
+ UNNotificationAction *action1 = [UNNotificationAction actionWithIdentifier:@"action_1" title:@"Back" options:UNNotificationActionOptionNone];
269
+ UNNotificationAction *action2 = [UNNotificationAction actionWithIdentifier:@"action_2" title:@"Next" options:UNNotificationActionOptionNone];
270
+ UNNotificationAction *action3 = [UNNotificationAction actionWithIdentifier:@"action_3" title:@"View In App" options:UNNotificationActionOptionNone];
271
+ UNNotificationCategory *cat = [UNNotificationCategory categoryWithIdentifier:@"CTNotification" actions:@[action1, action2, action3] intentIdentifiers:@[] options:UNNotificationCategoryOptionNone];
272
+ [center setNotificationCategories:[NSSet setWithObjects:cat, nil]];
273
+ ```
274
+
275
+ ### Out of the box
276
+
277
+
278
+ # Dashboard Usage
279
+
280
+ [(Back to top)](#table-of-contents)
281
+ While creating a Push Notification campaign on CleverTap, just follow the steps below -
282
+
283
+ 1. On the "WHAT" section pass the desired required values in the "title" and "message" fields (NOTE: These are iOS alert title and body).
284
+ ![Dashboard alert](https://github.com/CleverTap/CTNotificationContent/blob/master/images/dashboard_alert.png)
285
+ 2. Click on "Advanced" and then click on "Rich Media" and select Single or Carousel template.
286
+ ![Dashboard Rich Media](https://github.com/CleverTap/CTNotificationContent/blob/master/images/dashboard_richMedia.png)
287
+ 3. For adding custom key-value pair, add the [template Keys](#template-keys) individually or into one JSON object and use the `pt_json` key to fill in the values.
288
+ ![Dashboard Custom Key individual](https://github.com/CleverTap/CTNotificationContent/blob/master/images/dashboard_customKeysIndividual.png)
289
+ ![Dashboard Custom Key JSON](https://github.com/CleverTap/CTNotificationContent/blob/master/images/dashboard_customKeyValue.png)
290
+ 4. Send a test push and schedule!
291
+
292
+ # Template Types
293
+
294
+ [(Back to top)](#table-of-contents)
295
+
296
+ ## Rich Media
297
+ ### Single Media
298
+ Single media is for basic view with single image.
299
+ ![Single Media](https://github.com/CleverTap/CTNotificationContent/blob/master/images/SingleMedia.png)
300
+
301
+ ### Content Slider
302
+ Content Slider is for image slideshow view where user can add multiple images with different captions, sub-captions, and actions.
303
+
304
+ <img src="https://github.com/CleverTap/CTNotificationContent/blob/master/images/ContentSlider.gif" alt="Content slider" width="450" height="800"/>
305
+
306
+ ## Custom key-value pair
307
+
308
+ ### Basic Template
309
+ Basic Template is the basic push notification received on apps where user can also update text colour, background colour.
310
+
311
+ ![Custom Basic template](https://github.com/CleverTap/CTNotificationContent/blob/master/images/CustomBasicTemplate.png)
312
+
313
+ ### Auto Carousel Template
314
+ Auto carousel is an automatic revolving carousel push notification where user can also update text colour, background colour.
315
+
316
+ <img src="https://github.com/CleverTap/CTNotificationContent/blob/master/images/CustomAutoCarousel.gif" alt="Auto carousel" width="450" height="800"/>
317
+
318
+ ### Manual Carousel Template
319
+ This is the manual version of the carousel. The user can navigate to the next/previous image by clicking on the Next/Back buttons.
320
+ ---
321
+ **NOTE:**
322
+
323
+ For iOS 12 and above, you need to configure your Notification Content target Info.plist to reflect the category identifier you registered: `NSExtension -> NSExtensionAttributes -> UNNotificationExtensionCategory`. In addition, set the `UNNotificationExtensionInitialContentSizeRatio -> 0.1` , `UNNotificationExtensionDefaultContentHidden -> true` and `UNNotificationExtensionUserInteractionEnabled -> 1`.
324
+
325
+ For iOS 11 and below, the previous/next buttons will not work. Please use notification actions with identifiers `action_1` and `action_2` for this purpose.
326
+
327
+ ---
328
+
329
+ <img src="https://github.com/CleverTap/CTNotificationContent/blob/master/images/CustomManualCarousel.gif" alt="Manual carousel" width="450" height="800"/>
330
+
331
+ ### Timer Template
332
+ This template features a live countdown timer. You can even choose to show different title, message, and background image after the timer expires.
333
+
334
+ <img src="https://github.com/CleverTap/CTNotificationContent/blob/master/images/CustomTimerTemplate.gif" alt="Timer template" width="450" height="800"/>
335
+
336
+ ### Zero Bezel Template
337
+
338
+ The Zero Bezel template ensures that the background image covers the entire available surface area of the push notification. All the text is overlayed on the image.
339
+
340
+ ![Zero Bezel template](https://github.com/CleverTap/CTNotificationContent/blob/master/images/ZeroBezel.png)
341
+
342
+ ### Rating Template
343
+
344
+ Rating template lets your users give you feedback.
345
+
346
+ **NOTE:**
347
+
348
+ For iOS 12 and above, you need to configure your Notification Content target Info.plist to reflect the category identifier you registered: `NSExtension -> NSExtensionAttributes -> UNNotificationExtensionCategory`. In addition, set the `UNNotificationExtensionInitialContentSizeRatio -> 0.1` , `UNNotificationExtensionDefaultContentHidden -> true` and `UNNotificationExtensionUserInteractionEnabled -> 1`.
349
+ For iOS 11 and below, it will fallback to a basic template.
350
+
351
+ ---
352
+
353
+ ![Rating](https://github.com/CleverTap/CTNotificationContent/blob/master/images/Rating.gif)
354
+
355
+ ### Product Catalog Template
356
+
357
+ Product catalog template lets you show case different images of a product (or a product catalog) before the user can decide to click on the "BUY NOW" option which can take them directly to the product via deep links. This template has two variants.
358
+
359
+ **NOTE:**
360
+
361
+ For iOS 12 and above, you need to configure your Notification Content target Info.plist to reflect the category identifier you registered: `NSExtension -> NSExtensionAttributes -> UNNotificationExtensionCategory`. In addition, set the `UNNotificationExtensionInitialContentSizeRatio -> 0.1` , `UNNotificationExtensionDefaultContentHidden -> true` and `UNNotificationExtensionUserInteractionEnabled -> 1`.
362
+ For iOS 11 and below, it will fallback to a basic template.
363
+
364
+ ---
365
+
366
+ ### Vertical View
367
+
368
+ ![Product Display](https://github.com/CleverTap/CTNotificationContent/blob/master/images/ProductDisplayVertical.gif)
369
+
370
+ ### Linear View
371
+
372
+ Use the following keys to enable linear view variant of this template.
373
+
374
+ Template Key | Required | Value
375
+ ---:|:---:|:---
376
+ pt_product_display_linear | Optional | `true`
377
+
378
+ ![Product Display](https://github.com/CleverTap/CTNotificationContent/blob/master/images/ProductDisplayLinear.gif)
379
+
380
+ ### WebView Template
381
+
382
+ WebView template lets you load a remote https URL.
383
+
384
+ ![WebView Template](https://github.com/CleverTap/CTNotificationContent/blob/master/images/WebView.gif)
385
+
386
+ **Note:** If any image can't be downloaded, the template falls back to basic template with caption and sub caption only.
387
+
388
+ # Template Keys
389
+
390
+ [(Back to top)](#table-of-contents)
391
+
392
+ ## Rich Media
393
+ ### Content Slider
394
+ Configure your APNS payload:
395
+
396
+ Then, when sending notifications via [APNS](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html):
397
+ - include the mutable-content flag in your payload aps entry (this key must be present in the aps payload or the system will not call your app extension)
398
+ - for the Image Slideshow view, add the `ct_ContentSlider` key with a json object value, see example below, to the payload, outside of the aps entry.
399
+
400
+
401
+
402
+ ```
403
+ {
404
+
405
+ "aps": {
406
+ "alert": {
407
+ "body": "test message",
408
+ "title": "test title",
409
+ },
410
+ "category": "CTNotification",
411
+ "mutable-content": true,
412
+ },
413
+ "ct_ContentSlider": {
414
+ "orientation": "landscape", // landscape assumes 16:9 images, remove to display default square/portrait images
415
+ "showsPaging": true, // optional to display UIPageControl
416
+ "autoPlay": true, // optional to auto play the slideshow
417
+ "autoDismiss": true, // optional to auto dismiss the notification on item actionUrl launch
418
+ "items":[
419
+ {
420
+ "caption": "caption one",
421
+ "subcaption": "subcaption one",
422
+ "imageUrl": "https://s3.amazonaws.com/ct-demo-images/landscape-1.jpg",
423
+ "actionUrl": "com.clevertap.ctcontent.example://item/one"
424
+ },
425
+ {
426
+ "caption": "caption two",
427
+ "subcaption": "subcaption two",
428
+ "imageUrl": "https://s3.amazonaws.com/ct-demo-images/landscape-2.jpg",
429
+ "actionUrl": "com.clevertap.ctcontent.example://item/two"
430
+ }
431
+ ]
432
+ }
433
+ }
434
+ ```
435
+ ## Custom key-value pair
436
+
437
+ ### Basic Template
438
+ Basic Template Keys | Required | Description
439
+ ---:|:---:|:---|
440
+ pt_id | Required | Value - `pt_basic`
441
+ pt_title | Required | Title
442
+ pt_msg | Required | Message
443
+ pt_msg_summary | Required | Message line when Notification is expanded
444
+ pt_bg | Required | Background Color in HEX
445
+ pt_big_img | Optional | Image
446
+ pt_dl1 | Optional | One Deep Link
447
+ pt_title_clr | Optional | Title Color in HEX
448
+ pt_msg_clr | Optional | Message Color in HEX
449
+ pt_json | Optional | Above keys in JSON format
450
+
451
+ ### Auto Carousel Template
452
+
453
+ Auto Carousel Template Keys | Required | Description
454
+ ---:|:---:|:---
455
+ pt_id | Required | Value - `pt_carousel`
456
+ pt_title | Required | Title
457
+ pt_msg | Required | Message
458
+ pt_msg_summary | Optional | Message line when Notification is expanded
459
+ pt_dl1 | Required | Deep Link
460
+ pt_img1 | Required | Image One
461
+ pt_img2 | Required | Image Two
462
+ pt_img3 | Required | Image Three
463
+ pt_bg | Required | Background Color in HEX
464
+ pt_title_clr | Optional | Title Color in HEX
465
+ pt_msg_clr | Optional | Message Color in HEX
466
+ pt_json | Optional | Above keys in JSON format
467
+
468
+ ### Manual Carousel Template
469
+
470
+ Manual Carousel Template Keys | Required | Description
471
+ ---:|:---:|:---
472
+ pt_id | Required | Value - `pt_manual_carousel`
473
+ pt_title | Required | Title
474
+ pt_msg | Required | Message
475
+ pt_msg_summary | Optional | Message line when Notification is expanded
476
+ pt_dl1 | Required | Deep Link One
477
+ pt_img1 | Required | Image One
478
+ pt_img2 | Required | Image Two
479
+ pt_img3 | Required | Image Three
480
+ pt_bg | Required | Background Color in HEX
481
+ pt_title_clr | Optional | Title Color in HEX
482
+ pt_msg_clr | Optional | Message Color in HEX
483
+ pt_json | Optional | Above keys in JSON format
484
+
485
+ ### Timer Template
486
+
487
+ Timer Template Keys | Required | Description
488
+ ---:|:---:|:---
489
+ pt_id | Required | Value - `pt_timer`
490
+ pt_title | Required | Title
491
+ pt_title_alt | Optional | Title to show after timer expires
492
+ pt_msg | Required | Message
493
+ pt_msg_alt | Optional | Message to show after timer expires
494
+ pt_msg_summary | Optional | Message line when Notification is expanded
495
+ pt_dl1 | Required | Deep Link
496
+ pt_big_img | Optional | Image
497
+ pt_big_img_alt | Optional | Image to show when timer expires
498
+ pt_bg | Required | Background Color in HEX
499
+ pt_chrono_title_clr | Optional | Color for timer text in HEX
500
+ pt_timer_threshold | Required | Timer duration in seconds. Will be given higher priority.
501
+ pt_timer_end | Optional | Epoch Timestamp to countdown to (for example, $D_1595871380 or 1595871380). Not needed if pt_timer_threshold is specified.
502
+ pt_title_clr | Optional | Title Color in HEX
503
+ pt_msg_clr | Optional | Message Color in HEX
504
+ pt_json | Optional | Above keys in JSON format
505
+
506
+ ### Zero Bezel Template
507
+
508
+ Zero Bezel Template Keys | Required | Description
509
+ ---:|:---:|:---
510
+ pt_id | Required | Value - `pt_zero_bezel`
511
+ pt_title | Required | Title
512
+ pt_msg | Required | Message
513
+ pt_msg_summary | Optional | Message line when Notification is expanded
514
+ pt_subtitle | Optional | Subtitle
515
+ pt_big_img | Required | Image
516
+ pt_dl1 | Required | Deep Link
517
+ pt_title_clr | Optional | Title Color in HEX
518
+ pt_msg_clr | Optional | Message Color in HEX
519
+ pt_json | Optional | Above keys in JSON format
520
+
521
+ ### Rating Template
522
+
523
+ Rating Template Keys | Required | Description
524
+ ---:|:---:|:---
525
+ pt_id | Required | Value - `pt_rating`
526
+ pt_title | Required | Title
527
+ pt_msg | Required | Message
528
+ pt_big_img | Optional | Image
529
+ pt_msg_summary | Optional | Message line when Notification is expanded
530
+ pt_subtitle | Optional | Subtitle
531
+ pt_default_dl | Required | Default Deep Link for Push Notification
532
+ pt_dl1 | Required | Deep Link for first/all star(s)
533
+ pt_dl2 | Optional | Deep Link for second star
534
+ pt_dl3 | Optional | Deep Link for third star
535
+ pt_dl4 | Optional | Deep Link for fourth star
536
+ pt_dl5 | Optional | Deep Link for fifth star
537
+ pt_bg | Required | Background Color in HEX
538
+ pt_ico | Optional | Large Icon
539
+ pt_title_clr | Optional | Title Color in HEX
540
+ pt_msg_clr | Optional | Message Color in HEX
541
+ pt_json | Optional | Above keys in JSON format
542
+
543
+ ### Product Catalog Template
544
+
545
+ Product Catalog Template Keys | Required | Description
546
+ ---:|:---:|:---
547
+ pt_id | Required | Value - `pt_product_display`
548
+ pt_title | Required | Title
549
+ pt_msg | Required | Message
550
+ pt_subtitle | Optional | Subtitle
551
+ pt_img1 | Required | Image One
552
+ pt_img2 | Required | Image Two
553
+ pt_img3 | Optional | Image Three
554
+ pt_bt1 | Required | Big text for first image
555
+ pt_bt2 | Required | Big text for second image
556
+ pt_bt3 | Required | Big text for third image
557
+ pt_st1 | Required | Small text for first image
558
+ pt_st2 | Required | Small text for second image
559
+ pt_st3 | Required | Small text for third image
560
+ pt_dl1 | Required | Deep Link for first image
561
+ pt_dl2 | Required | Deep Link for second image
562
+ pt_dl3 | Required | Deep Link for third image
563
+ pt_price1 | Required | Price for first image
564
+ pt_price2 | Required | Price for second image
565
+ pt_price3 | Required | Price for third image
566
+ pt_bg | Required | Background Color in HEX
567
+ pt_product_display_action | Required | Action Button Label Text
568
+ pt_product_display_linear | Optional | Linear Layout Template ("true"/"false")
569
+ pt_product_display_action_clr | Required | Action Button Background Color in HEX
570
+ pt_title_clr | Optional | Title Color in HEX
571
+ pt_msg_clr | Optional | Message Color in HEX
572
+ pt_json | Optional | Above keys in JSON format
573
+
574
+ ### WebView Template
575
+
576
+ WebView Template Keys | Required | Description
577
+ ---:|:---:|:---
578
+ pt_id | Required | Value - `pt_web_view`
579
+ pt_dl1 | Required | Deep Link
580
+ pt_url | Required | URL to load
581
+ pt_orientation | Optional | Value - `landscape` or `portrait`
582
+ pt_json | Optional | Above keys in JSON format
@@ -0,0 +1,99 @@
1
+ ## 🔖 Overview
2
+
3
+ Push Primer allows you to enable runtime push permission for sending notifications from an app.
4
+
5
+ Starting with the v0.9.5 release, CleverTap React Native supports Push primer for push notification runtime permission through local in-app.
6
+
7
+ For Push Primer, minimum supported version for iOS platform is 10.0 while android 13 for the android platform.
8
+
9
+ ### Push Primer using Half-Interstitial local In-app
10
+ ```javascript
11
+ let localInApp = {
12
+ inAppType: 'half-interstitial',
13
+ titleText: 'Get Notified',
14
+ messageText:
15
+ 'Please enable notifications on your device to use Push Notifications.',
16
+ followDeviceOrientation: true,
17
+ positiveBtnText: 'Allow',
18
+ negativeBtnText: 'Cancel',
19
+ backgroundColor: '#FFFFFF',
20
+ btnBorderColor: '#0000FF',
21
+ titleTextColor: '#0000FF',
22
+ messageTextColor: '#000000',
23
+ btnTextColor: '#FFFFFF',
24
+ btnBackgroundColor: '#0000FF',
25
+ btnBorderRadius: '2',
26
+ fallbackToSettings: true,
27
+ imageUrl: 'https://icons.iconarchive.com/icons/treetog/junior/64/camera-icon.png',
28
+ altText: 'Altenate Image'
29
+ };
30
+
31
+ CleverTap.promptPushPrimer(localInApp);
32
+ ```
33
+
34
+ ### Push Primer using Alert local In-app
35
+ ```javascript
36
+ CleverTap.promptPushPrimer({
37
+ inAppType: 'alert',
38
+ titleText: 'Get Notified',
39
+ messageText: 'Enable Notification permission',
40
+ followDeviceOrientation: true,
41
+ positiveBtnText: 'Allow',
42
+ negativeBtnText: 'Cancel',
43
+ fallbackToSettings: true,
44
+ });
45
+ ```
46
+
47
+ ### Prompt the Notification Permission Dialog (without push primer)
48
+ It takes boolean as a parameter. If the value passed is true and permission is denied then we fallback to app’s notification settings. If false then we just give the callback saying permission is denied.
49
+
50
+ ```javascript
51
+ CleverTap.promptForPushPermission(true);
52
+ ```
53
+
54
+ ### Get the Push notification permission status
55
+ Returns the status of the push permission in the callback handler.
56
+
57
+ ```javascript
58
+ CleverTap.isPushPermissionGranted((err, res) => {
59
+ console.log('isPushPermissionGranted', res, err);
60
+ });
61
+ ```
62
+
63
+ ### Description of the localInApp Object passed inside the PromptPushPrimer(localInApp) method
64
+
65
+ Key Name| Parameters | Description | Required
66
+ :---:|:---:|:---:|:---
67
+ `inAppType` | "half-interstitial" or "alert" | Accepts only half-interstitial & alert type to display the local in-app | Required
68
+ `titleText` | String | Sets the title of the local in-app | Required
69
+ `messageText` | String | Sets the subtitle of the local in-app | Required
70
+ `followDeviceOrientation` | true or false | If true then the local InApp is shown for both portrait and landscape. If it sets false then local InApp only displays for portrait mode | Required
71
+ `positiveBtnText` | String | Sets the text of the positive button | Required
72
+ `negativeBtnText` | String | Sets the text of the negative button | Required
73
+ `fallbackToSettings` | true or false | If true and the permission is denied then we fallback to app’s notification settings, if it’s false then we just give the callback saying permission is denied. | Optional
74
+ `backgroundColor` | Accepts Hex color as String | Sets the background color of the local in-app | Optional
75
+ `btnBorderColor` | Accepts Hex color as String | Sets the border color of both positive/negative buttons | Optional
76
+ `titleTextColor` | Accepts Hex color as String | Sets the title color of the local in-app | Optional
77
+ `messageTextColor` | Accepts Hex color as String | Sets the sub-title color of the local in-app | Optional
78
+ `btnTextColor` | Accepts Hex color as String | Sets the color of text for both positive/negative buttons | Optional
79
+ `btnBackgroundColor` | Accepts Hex color as String | Sets the background color for both positive/negative buttons | Optional
80
+ `btnBorderRadius` | String | Sets the radius for both positive/negative buttons. Default radius is “2” if not set | Optional
81
+ `fallbackToSettings` | true or false | If the value passed is true then we fallback to app’s notification settings in case permission is denied. If false then we just give the callback saying permission is denied. | Optional
82
+
83
+
84
+ ### Available Callbacks for Push Primer
85
+ Based on notification permission grant/deny, CleverTap React Native SDK provides a callback with the permission status.
86
+ For this You can register the CleverTapPushPermissionResponseReceived callback:
87
+ ```javascript
88
+ CleverTap.addListener(CleverTap.CleverTapPushPermissionResponseReceived, (e)=>{/*consume the event*/})
89
+ ```
90
+
91
+ To unregister the callback use below:
92
+ ```javascript
93
+ CleverTap.removeListener(CleverTap.CleverTapPushPermissionResponseReceived);
94
+ ```
95
+
96
+
97
+
98
+
99
+