用途:为 CometChat v6 配置 Firebase Cloud Messaging(FCM)推送,处理聊天消息与通话通知,并通过 VoIP 与 TelecomManager 实现后台来电的原生通话界面及通知深链跳转。
主要能力:在项目级与应用级 Gradle 中加入 google-services 插件和 firebase-bom、firebase-messaging 依赖,放入 google-services.json,并在 Application.onCreate() 调用 FirebaseApp.initializeApp(this)。实现 FirebaseMessagingService 子类,在 onNewToken 保存令牌,在 onMessageReceived 按 data["type"] 为 chat 或 call 分流。聊天通知可调用 CometChat.markAsDelivered 标记已送达,并在用户不在同一会话时构建通知。通话通知需检查 SDK 是否已初始化,校验 VoIP 所需权限与电话账户,initiated 时在后台展示来电 UI,cancelled/unanswered 时结束对应会话的原生通话界面。前台来电交由 UIKit 的 CometChatIncomingCall 处理。VoIP 需要 READ_PHONE_STATE、MANAGE_OWN_CALLS、ANSWER_PHONE_CALLS 权限,并在 Manifest 注册 FCMService 与带 BIND_TELECOM_CONNECTION_SERVICE 权限的 CometChatVoIPConnectionService。按应用前后台调用 CometChat.connect/disconnect 管理 WebSocket。
必要用法:推送令牌注册使用 CometChatNotifications.registerPushToken(...) 与 unregisterPushToken(...),这是 kit 唯一公开的推送接口。文中 FCMService、CometChatVoIP、FCMMessageDTO、FCMCallDto 等类不在 com.cometchat:chatuikit-{compose,kotlin}-android:6.x 中导出,属于 master-app-jetpack 示例代码,需自行复制或参考编写。
限制:调用任何 SDK 能力前必须检查 CometChatUIKit.isSDKInitialized(),应用被杀后可能未初始化而无法处理来电;前台禁止展示 VoIP 来电 UI;markAsDelivered 依赖 SDK 已初始化;需按生命周期管理 WebSocket 以免耗电。具体版本号、收费与平台细节资料未提供。