@cometchat/skills 4.4.1 → 5.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 (489) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,619 +0,0 @@
1
- ---
2
- name: cometchat-android-v5-push
3
- description: "Push notifications for CometChat Android — FCM setup, CometChatNotifications API, token registration with PushPlatforms, foreground/background handling, notification channels, reply-from-notification, and tap-to-deep-link."
4
- license: "MIT"
5
- compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x; com.google.firebase:firebase-messaging"
6
- metadata:
7
- author: "CometChat"
8
- version: "3.0.0"
9
- tags: "cometchat android push notifications fcm firebase deep-link CometChatNotifications PushPlatforms"
10
- ---
11
-
12
- > **Companion skills:** `cometchat-android-v5-core` covers init and login;
13
- > `cometchat-android-v5-production` covers production auth and token security.
14
-
15
- ## Purpose
16
-
17
- Push notifications are non-negotiable for production chat. Without them, a backgrounded app never wakes when a message arrives. This skill covers end-to-end FCM setup for CometChat Android v5 — using the correct `CometChatNotifications` API with `PushPlatforms.FCM_ANDROID`, notification channels, foreground/background handling, reply-from-notification, and tap-to-deep-link.
18
-
19
- **Ground truth:** `sample-app-java+push-notification/src/main/java/com/cometchat/sampleapp/java/fcm/` and `sample-app-kotlin+push-notification/src/main/java/com/cometchat/sampleapp/kotlin/fcm/` in the v5 UIKit repository. **Official docs:** https://www.cometchat.com/docs/notifications/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP).
20
-
21
- ---
22
-
23
- ## Use this skill when
24
-
25
- - "Set up push notifications"
26
- - "Messages don't arrive when app is backgrounded"
27
- - "How do I handle notification taps?"
28
- - "FCM token registration with CometChat"
29
- - "How do I register push token?"
30
- - "CometChatNotifications API"
31
-
32
- ## Do not use this skill when
33
-
34
- - Setting up init/login → use `cometchat-android-v5-core`
35
- - Diagnosing non-push issues → use `cometchat-android-v5-troubleshooting`
36
- - Setting up VoIP calls → see VoIP section in this skill, but call UI is in `cometchat-android-v5-features`
37
-
38
- ---
39
-
40
- ## 1. The moving pieces
41
-
42
- ```
43
- FCM (Google) → CometChat Dashboard → CometChat Server → Android Client
44
- ```
45
-
46
- When user A sends a message to user B:
47
- 1. CometChat server receives the message
48
- 2. Looks up B's registered push token (registered via `CometChatNotifications.registerPushToken()`)
49
- 3. Sends push via FCM using the dashboard credentials
50
- 4. B's device receives it via `FirebaseMessagingService.onMessageReceived()`
51
- 5. App builds and displays a notification; tap → deep-link to conversation
52
-
53
- All five steps must work. A broken step is almost always silent — no log, no error, just no notification.
54
-
55
- ---
56
-
57
- ## 2. FCM setup
58
-
59
- ### 2a. Firebase project + google-services.json
60
-
61
- 1. https://console.firebase.google.com → Add project
62
- 2. Project Overview → Add app → Android → enter your `applicationId`
63
- 3. Download `google-services.json` → place at `app/google-services.json`
64
-
65
- ### 2b. Gradle dependencies
66
-
67
- ```groovy
68
- // project-level build.gradle
69
- buildscript {
70
- dependencies {
71
- classpath 'com.google.gms:google-services:4.4.2'
72
- }
73
- }
74
-
75
- // app-level build.gradle
76
- apply plugin: 'com.google.gms.google-services'
77
-
78
- dependencies {
79
- implementation 'com.google.firebase:firebase-messaging:24.+'
80
- }
81
- ```
82
-
83
- ### 2c. Service account JSON (for CometChat dashboard)
84
-
85
- 1. Firebase Console → Project Settings → Service accounts
86
- 2. Generate new private key → downloads a `.json` file
87
- 3. You'll upload this to the CometChat dashboard in §3
88
-
89
- ---
90
-
91
- ## 3. CometChat dashboard — upload FCM credentials
92
-
93
- 1. https://app.cometchat.com → your app → **Notifications** → **Push Notifications**
94
- 2. **Add Provider** → choose **FCM**
95
- 3. Upload the service account `.json` file from §2c
96
- 4. Save → note the **Provider ID** (e.g., `"Android-CometChat-Team-Messenger"`)
97
-
98
- You'll use this Provider ID in your client code when calling `CometChatNotifications.registerPushToken()`.
99
-
100
- ---
101
-
102
- ## 4. Token registration API — `CometChatNotifications`
103
-
104
- The v5 SDK uses `CometChatNotifications.registerPushToken()` — **not** the deprecated `CometChat.registerTokenForPushNotification()`.
105
-
106
- ### API reference
107
-
108
- | Method | Signature | Description |
109
- |---|---|---|
110
- | `registerPushToken` | `CometChatNotifications.registerPushToken(String token, PushPlatforms platform, String providerId, CallbackListener<String>)` | Register FCM token with CometChat (param 2 is the `PushPlatforms` enum, e.g. `PushPlatforms.FCM_ANDROID` — not a String) |
111
- | `unregisterPushToken` | `CometChatNotifications.unregisterPushToken(CallbackListener<String>)` | Unregister token (call before logout) |
112
-
113
- ### PushPlatforms constants
114
-
115
- | Constant | Value | Use for |
116
- |---|---|---|
117
- | `PushPlatforms.FCM_ANDROID` | `"fcm_android"` | Android FCM push |
118
-
119
- ### Register token after login
120
-
121
- **Java:**
122
- ```java
123
- public static void registerFCMToken(CometChat.CallbackListener<String> listener) {
124
- FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
125
- if (task.isSuccessful()) {
126
- String pushToken = task.getResult();
127
- CometChatNotifications.registerPushToken(
128
- pushToken,
129
- PushPlatforms.FCM_ANDROID,
130
- "YOUR_PROVIDER_ID", // from CometChat dashboard §3
131
- new CometChat.CallbackListener<String>() {
132
- @Override
133
- public void onSuccess(String s) {
134
- listener.onSuccess(s);
135
- }
136
-
137
- @Override
138
- public void onError(CometChatException e) {
139
- listener.onError(e);
140
- }
141
- }
142
- );
143
- } else {
144
- listener.onError(new CometChatException("ERROR", "Failed to get FCM token"));
145
- }
146
- });
147
- }
148
- ```
149
-
150
- **Kotlin:**
151
- ```kotlin
152
- fun registerFCMToken(listener: CometChat.CallbackListener<String>) {
153
- FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
154
- if (task.isSuccessful) {
155
- val pushToken = task.result
156
- CometChatNotifications.registerPushToken(
157
- pushToken,
158
- PushPlatforms.FCM_ANDROID,
159
- "YOUR_PROVIDER_ID", // from CometChat dashboard §3
160
- object : CometChat.CallbackListener<String?>() {
161
- override fun onSuccess(s: String?) {
162
- listener.onSuccess(s)
163
- }
164
-
165
- override fun onError(e: CometChatException) {
166
- listener.onError(e)
167
- }
168
- }
169
- )
170
- } else {
171
- listener.onError(CometChatException("ERROR", "Failed to get FCM token"))
172
- }
173
- }
174
- }
175
- ```
176
-
177
- ### Unregister before logout
178
-
179
- **Java:**
180
- ```java
181
- public static void unregisterFCMToken(CometChat.CallbackListener<String> listener) {
182
- CometChatNotifications.unregisterPushToken(new CometChat.CallbackListener<String>() {
183
- @Override
184
- public void onSuccess(String s) {
185
- listener.onSuccess(s);
186
- }
187
-
188
- @Override
189
- public void onError(CometChatException e) {
190
- listener.onError(e);
191
- }
192
- });
193
- }
194
- ```
195
-
196
- **Kotlin:**
197
- ```kotlin
198
- fun unregisterFCMToken(listener: CometChat.CallbackListener<String>) {
199
- CometChatNotifications.unregisterPushToken(object : CometChat.CallbackListener<String?>() {
200
- override fun onSuccess(s: String?) {
201
- listener.onSuccess(s)
202
- }
203
-
204
- override fun onError(e: CometChatException) {
205
- listener.onError(e)
206
- }
207
- })
208
- }
209
- ```
210
-
211
- ---
212
-
213
- ## 5. FirebaseMessagingService implementation
214
-
215
- ### 5a. Service class
216
-
217
- **Java:**
218
- ```java
219
- public class FCMService extends FirebaseMessagingService {
220
- private static String fcmToken;
221
-
222
- @Override
223
- public void onNewToken(@NonNull String token) {
224
- super.onNewToken(token);
225
- fcmToken = token;
226
- // Re-register if user is already logged in
227
- // (token rotation can happen at any time)
228
- }
229
-
230
- @Override
231
- public void onMessageReceived(@NonNull RemoteMessage message) {
232
- super.onMessageReceived(message);
233
- if (message.getData().isEmpty()) return;
234
-
235
- String type = message.getData().get("type");
236
- if ("chat".equalsIgnoreCase(type)) {
237
- handleChatMessage(message);
238
- } else if ("call".equalsIgnoreCase(type)) {
239
- handleCallMessage(message);
240
- }
241
- }
242
-
243
- private void handleChatMessage(RemoteMessage message) {
244
- FCMMessageDTO dto = new Gson().fromJson(
245
- new Gson().toJson(message.getData()), FCMMessageDTO.class);
246
-
247
- // Mark as delivered
248
- CometChat.markAsDelivered(
249
- Long.parseLong(dto.getTag()),
250
- dto.getSender(),
251
- dto.getReceiverType(),
252
- dto.getReceiver()
253
- );
254
-
255
- // Build and show notification
256
- Intent clickIntent = new Intent(this, SplashActivity.class);
257
- FCMMessageNotificationUtils.showNotification(
258
- this, dto, clickIntent,
259
- "Reply", NotificationCompat.CATEGORY_MESSAGE
260
- );
261
- }
262
- }
263
- ```
264
-
265
- **Kotlin:**
266
- ```kotlin
267
- class FCMService : FirebaseMessagingService() {
268
- companion object {
269
- var fcmToken: String? = null
270
- private set
271
- }
272
-
273
- override fun onNewToken(token: String) {
274
- super.onNewToken(token)
275
- fcmToken = token
276
- }
277
-
278
- override fun onMessageReceived(message: RemoteMessage) {
279
- super.onMessageReceived(message)
280
- if (message.data.isEmpty()) return
281
-
282
- when (message.data["type"]?.lowercase()) {
283
- "chat" -> handleChatMessage(message)
284
- "call" -> handleCallMessage(message)
285
- }
286
- }
287
-
288
- private fun handleChatMessage(message: RemoteMessage) {
289
- val dto = Gson().fromJson(
290
- Gson().toJson(message.data), FCMMessageDTO::class.java)
291
-
292
- CometChat.markAsDelivered(
293
- dto.tag!!.toLong(),
294
- dto.sender!!,
295
- dto.receiverType!!,
296
- dto.receiver!!
297
- )
298
-
299
- val clickIntent = Intent(this, SplashActivity::class.java)
300
- FCMMessageNotificationUtils.showNotification(
301
- this, dto, clickIntent,
302
- "Reply", NotificationCompat.CATEGORY_MESSAGE
303
- )
304
- }
305
- }
306
- ```
307
-
308
- ### 5b. Register in AndroidManifest.xml
309
-
310
- ```xml
311
- <service
312
- android:name=".fcm.FCMService"
313
- android:exported="false">
314
- <intent-filter>
315
- <action android:name="com.google.firebase.MESSAGING_EVENT" />
316
- </intent-filter>
317
- </service>
318
- ```
319
-
320
- ---
321
-
322
- ## 6. Push payload schema
323
-
324
- CometChat sends data-only FCM messages. The payload fields:
325
-
326
- ### Chat message payload (`type: "chat"`)
327
-
328
- | Field | Type | Description |
329
- |---|---|---|
330
- | `type` | `String` | Always `"chat"` for messages |
331
- | `sender` | `String` | Sender UID |
332
- | `senderName` | `String` | Sender display name |
333
- | `senderAvatar` | `String` | Sender avatar URL |
334
- | `receiver` | `String` | Receiver UID (user) or GUID (group) |
335
- | `receiverName` | `String` | Receiver display name |
336
- | `receiverType` | `String` | `"user"` or `"group"` |
337
- | `receiverAvatar` | `String` | Receiver avatar URL |
338
- | `conversationId` | `String` | Conversation ID |
339
- | `body` | `String` | Message text |
340
- | `title` | `String` | Notification title |
341
- | `tag` | `String` | Message ID (as string) |
342
- | `unreadMessageCount` | `String` | Unread count (as string) |
343
-
344
- ### Call payload (`type: "call"`)
345
-
346
- | Field | Type | Description |
347
- |---|---|---|
348
- | `type` | `String` | Always `"call"` |
349
- | `callAction` | `String` | `"initiated"`, `"cancelled"`, `"unanswered"` |
350
- | `sessionId` | `String` | Call session ID |
351
- | `callType` | `String` | `"audio"` or `"video"` |
352
- | `sender` / `receiver` / `senderName` / etc. | `String` | Same as chat payload |
353
-
354
- ### DTO classes
355
-
356
- **Java:**
357
- ```java
358
- public class FCMMessageDTO {
359
- @SerializedName("conversationId") private String conversationId;
360
- @SerializedName("sender") private String sender;
361
- @SerializedName("receiver") private String receiver;
362
- @SerializedName("receiverName") private String receiverName;
363
- @SerializedName("receiverType") private String receiverType;
364
- @SerializedName("receiverAvatar") private String receiverAvatar;
365
- @SerializedName("tag") private String tag;
366
- @SerializedName("body") private String text;
367
- @SerializedName("type") private String type;
368
- @SerializedName("title") private String title;
369
- @SerializedName("senderAvatar") private String senderAvatar;
370
- @SerializedName("senderName") private String senderName;
371
- @SerializedName("unreadMessageCount") private String unreadMessageCount;
372
- // getters and setters
373
- }
374
- ```
375
-
376
- **Kotlin:**
377
- ```kotlin
378
- class FCMMessageDTO {
379
- @SerializedName("conversationId") var conversationId: String? = null
380
- @SerializedName("sender") var sender: String? = null
381
- @SerializedName("receiver") var receiver: String? = null
382
- @SerializedName("receiverName") var receiverName: String? = null
383
- @SerializedName("receiverType") var receiverType: String? = null
384
- @SerializedName("receiverAvatar") var receiverAvatar: String? = null
385
- @SerializedName("tag") var tag: String? = null
386
- @SerializedName("body") var text: String? = null
387
- @SerializedName("type") var type: String? = null
388
- @SerializedName("title") var title: String? = null
389
- @SerializedName("senderAvatar") var senderAvatar: String? = null
390
- @SerializedName("senderName") var senderName: String? = null
391
- @SerializedName("unreadMessageCount") var unreadMessageCount: String? = null
392
- }
393
- ```
394
-
395
- Parse from `RemoteMessage`:
396
- ```java
397
- FCMMessageDTO dto = new Gson().fromJson(new Gson().toJson(message.getData()), FCMMessageDTO.class);
398
- ```
399
-
400
- ---
401
-
402
- ## 7. Notification channels (API 26+)
403
-
404
- Create channels in your `Application.onCreate()` or before showing the first notification:
405
-
406
- **Java:**
407
- ```java
408
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
409
- NotificationManager manager = getSystemService(NotificationManager.class);
410
-
411
- NotificationChannel messageChannel = new NotificationChannel(
412
- "Message", // channel ID
413
- "Message notification", // channel name
414
- NotificationManager.IMPORTANCE_HIGH
415
- );
416
- manager.createNotificationChannel(messageChannel);
417
-
418
- NotificationChannel callChannel = new NotificationChannel(
419
- "Call",
420
- "Call notification",
421
- NotificationManager.IMPORTANCE_HIGH
422
- );
423
- callChannel.setSound(null, null); // calls use their own ringtone
424
- manager.createNotificationChannel(callChannel);
425
- }
426
- ```
427
-
428
- **Kotlin:**
429
- ```kotlin
430
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
431
- val manager = getSystemService(NotificationManager::class.java)
432
-
433
- val messageChannel = NotificationChannel(
434
- "Message", "Message notification", NotificationManager.IMPORTANCE_HIGH
435
- )
436
- manager.createNotificationChannel(messageChannel)
437
-
438
- val callChannel = NotificationChannel(
439
- "Call", "Call notification", NotificationManager.IMPORTANCE_HIGH
440
- ).apply { setSound(null, null) }
441
- manager.createNotificationChannel(callChannel)
442
- }
443
- ```
444
-
445
- ---
446
-
447
- ## 8. Tap-to-deep-link
448
-
449
- The notification click intent routes through `SplashActivity` → `HomeActivity` → correct fragment/conversation.
450
-
451
- ### Setting up the click intent
452
-
453
- **Java:**
454
- ```java
455
- Intent clickIntent = new Intent(context, SplashActivity.class);
456
- clickIntent.putExtra("NOTIFICATION_TYPE", "NOTIFICATION_TYPE_MESSAGE");
457
- clickIntent.putExtra("NOTIFICATION_DATA", new Gson().toJson(fcmMessageDTO));
458
- clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
459
-
460
- PendingIntent pendingIntent = PendingIntent.getActivity(
461
- context, notificationId, clickIntent,
462
- PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
463
- );
464
- ```
465
-
466
- ### Handling in SplashActivity → HomeActivity
467
-
468
- ```java
469
- // In HomeActivity.onCreate() or onNewIntent()
470
- String notificationType = getIntent().getStringExtra("NOTIFICATION_TYPE");
471
- String notificationPayload = getIntent().getStringExtra("NOTIFICATION_DATA");
472
-
473
- if ("NOTIFICATION_TYPE_MESSAGE".equals(notificationType) && notificationPayload != null) {
474
- FCMMessageDTO dto = new Gson().fromJson(notificationPayload, FCMMessageDTO.class);
475
- if ("chat".equalsIgnoreCase(dto.getType())) {
476
- // Navigate to the conversation
477
- boolean isUser = "user".equals(dto.getReceiverType());
478
- String uid = isUser ? dto.getSender() : dto.getReceiver();
479
- // Open MessagesActivity with uid/guid
480
- }
481
- }
482
- ```
483
-
484
- ---
485
-
486
- ## 9. Reply from notification
487
-
488
- The sample apps support inline reply from the notification tray using `RemoteInput`:
489
-
490
- **Java:**
491
- ```java
492
- RemoteInput remoteInput = new RemoteInput.Builder("key_text_reply")
493
- .setLabel("Reply")
494
- .build();
495
-
496
- NotificationCompat.Action replyAction = new NotificationCompat.Action.Builder(
497
- R.drawable.ic_reply, "Reply", replyPendingIntent)
498
- .addRemoteInput(remoteInput)
499
- .build();
500
-
501
- builder.addAction(replyAction);
502
- ```
503
-
504
- The reply is received in a `BroadcastReceiver`:
505
-
506
- ```java
507
- public class FCMMessageBroadcastReceiver extends BroadcastReceiver {
508
- @Override
509
- public void onReceive(Context context, Intent intent) {
510
- Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
511
- if (remoteInput != null) {
512
- CharSequence replyText = remoteInput.getCharSequence("key_text_reply");
513
- // Send as TextMessage via CometChat.sendMessage()
514
- }
515
- }
516
- }
517
- ```
518
-
519
- ---
520
-
521
- ## 10. Permissions
522
-
523
- ```xml
524
- <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
525
- <uses-permission android:name="android.permission.INTERNET" />
526
- ```
527
-
528
- Request `POST_NOTIFICATIONS` at runtime on Android 13+:
529
-
530
- **Java:**
531
- ```java
532
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
533
- if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
534
- requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 100);
535
- }
536
- }
537
- ```
538
-
539
- **Kotlin:**
540
- ```kotlin
541
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
542
- if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
543
- requestPermissions(arrayOf(Manifest.permission.POST_NOTIFICATIONS), 100)
544
- }
545
- }
546
- ```
547
-
548
- ---
549
-
550
- ## 11. Badge count
551
-
552
- CometChat sends `unreadMessageCount` in the payload. Apply it:
553
-
554
- ```java
555
- String unreadCountStr = message.getData().get("unreadMessageCount");
556
- if (unreadCountStr != null) {
557
- int count = Integer.parseInt(unreadCountStr);
558
- ShortcutBadger.applyCount(getApplicationContext(), count);
559
- }
560
- ```
561
-
562
- Clear on app open:
563
- ```java
564
- ShortcutBadger.removeCount(this);
565
- ```
566
-
567
- ---
568
-
569
- ## 12. Testing the push pipeline
570
-
571
- | Step | How | What it verifies |
572
- |---|---|---|
573
- | 1. FCM alone | Firebase Console → Cloud Messaging → Send test message to your FCM token | Firebase + `google-services.json` are correct |
574
- | 2. CometChat → device | Send a message to the logged-in user from another user (dashboard or another device) | Dashboard provider config + token registration |
575
- | 3. Tap deep-link | Background the app, send a message, tap the notification | `PendingIntent` routing to correct conversation |
576
- | 4. Reply from notification | Pull down notification, type reply, send | `BroadcastReceiver` + `CometChat.sendMessage()` |
577
- | 5. Token rotation | Clear app data, re-open → `onNewToken()` fires | `onNewToken()` re-registers with CometChat |
578
-
579
- ---
580
-
581
- ## 13. Troubleshooting — common silent failures
582
-
583
- | Symptom | Likely cause | Fix |
584
- |---|---|---|
585
- | Token prints but no push arrives | Token registered BEFORE login, or wrong Provider ID | Call `registerPushToken()` AFTER `CometChatUIKit.login()` resolves. Verify Provider ID matches dashboard. |
586
- | Foreground: nothing shows | No `onMessageReceived()` implementation or no notification channel | Implement `FCMService.onMessageReceived()` + create `NotificationChannel` on API 26+ |
587
- | "Default FirebaseApp is not initialized" | `google-services.json` missing or Gradle plugin not applied | Re-check §2. Clean build: `./gradlew clean` |
588
- | Notification tap doesn't navigate | `PendingIntent` missing extras or wrong Activity | Pass `NOTIFICATION_TYPE` + `NOTIFICATION_DATA` in Intent extras, handle in target Activity |
589
- | Works for User A but not User B after logout | `unregisterPushToken` not called on logout | Call `CometChatNotifications.unregisterPushToken()` BEFORE `CometChatUIKit.logout()` |
590
- | No notifications on Android 13+ | Missing `POST_NOTIFICATIONS` runtime permission | Request at runtime before registering token |
591
- | Using deprecated `registerTokenForPushNotification()` | Old API from v4 | Use `CometChatNotifications.registerPushToken()` with `PushPlatforms.FCM_ANDROID` |
592
- | Provider ID mismatch | Client uses different Provider ID than dashboard | Copy exact Provider ID string from CometChat dashboard → Notifications → Push |
593
-
594
- ---
595
-
596
- ## 14. VoIP call push (advanced)
597
-
598
- Call pushes (`type: "call"`) require VoIP permissions and `CometChatVoIP` integration. The flow:
599
-
600
- 1. `onMessageReceived()` detects `type == "call"`
601
- 2. Check `callAction`: `"initiated"` → show incoming call, `"cancelled"` / `"unanswered"` → dismiss
602
- 3. Verify VoIP permissions: `CometChatVoIP.hasReadPhoneStatePermission()`, `hasManageOwnCallsPermission()`, `hasAnswerPhoneCallsPermission()`
603
- 4. If granted: `CometChatVoIP.addNewIncomingCall()` with call details in a `Bundle`
604
-
605
- This is an advanced topic — see the `voip/` package in the sample apps for the full implementation.
606
-
607
- ---
608
-
609
- ## Hard rules
610
-
611
- - **Use `CometChatNotifications.registerPushToken()` — NOT the deprecated `CometChat.registerTokenForPushNotification()`.** The v5 API requires `PushPlatforms.FCM_ANDROID` and a Provider ID.
612
- - **Register AFTER login.** The SDK needs a logged-in user to scope the token.
613
- - **Unregister BEFORE logout.** Call `CometChatNotifications.unregisterPushToken()` before `CometChatUIKit.logout()`.
614
- - **Handle `onNewToken()`.** FCM rotates tokens — missing the rotation means push stops working for some users.
615
- - **Create notification channels on API 26+.** Without a channel, notifications are silently dropped.
616
- - **Provider ID must match the dashboard.** Copy the exact string from CometChat dashboard → Notifications → Push Notifications.
617
- - **Call `CometChat.markAsDelivered()` in `onMessageReceived()`.** This updates delivery receipts even when the app is backgrounded.
618
- - **Test on a real device.** Emulator FCM behavior differs from real devices.
619
- - **Don't suppress `onMessageReceived()` for foreground messages.** CometChat sends data-only pushes — the OS does NOT auto-display them. You must build the notification yourself.