# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 模块概述 这是WeNext Android框架的推送服务模块,提供统一的推送消息管理。当前版本主要基于Firebase Cloud Messaging (FCM)实现。 ## 核心架构 ### 服务接口层 - `IPushService`: 推送服务核心接口,定义token获取、消息处理等主要功能 - `IPushServiceConfig`: 配置接口,业务层需实现此接口来提供网络服务和消息处理回调 ### 实现层 - `PushService`: 推送服务的单例实现,基于`BaseFrame` - `WeNextFirebaseMessagingService`: FCM消息接收服务,继承`FirebaseMessagingService` ### 数据模型 - `PushMessage`: 统一的推送消息数据结构 - `RegisterTokenReq/RegisterTokenRes`: token上报的请求和响应模型 ### 网络层 - `PushHttpService`: 基于Retrofit的HTTP服务接口,用于token上报 ## 关键设计模式 ### 单例懒加载 ```kotlin val pushService: IPushService by lazy { PushService() } ``` ### 配置注入 模块通过`IPushServiceConfig`接口获取依赖: - 网络服务(`INetworkService`) - 登录状态检查 - 消息处理回调 - token更新回调 ## 依赖关系 ### 框架依赖 - `frame:base`: 提供BaseFrame基础类和状态管理 - `frame:network`: 提供网络服务接口 - `frame:log`: 日志记录 - `frame:coroutine`: 协程支持 ### 外部依赖 - Firebase BOM和Firebase Messaging - Retrofit (compileOnly) - Gson (compileOnly) ## 关键常量和配置 在`Constants.kt`中定义了推送消息的关键字段: - `KEY_PUSH_ID`: 推送ID - `KEY_PUSH_MESSAGE_TYPE`: 消息类型 - `KEY_PUSH_DEEPLINK`: 深链接 - `KEY_PUSH_TITLE`: 推送标题 - `KEY_PUSH_MESSAGE`: 推送内容 ## 使用注意事项 ### 初始化 必须先调用`pushService.init(serviceConfig)`进行初始化,传入实现了`IPushServiceConfig`的配置对象。 ### Token管理 - FCM token变化时会自动上报到服务器 - 仅在用户已登录状态下上报token - 支持手动获取token和主动上报 ### 消息处理 - 过滤AppsFlyer卸载跟踪事件(`af-uinstall-tracking`) - 支持从Intent中解析推送消息参数 - 消息处理通过配置回调分发到业务层