CLAUDE.md 2.2 KB

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上报

关键设计模式

单例懒加载

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中解析推送消息参数
  • 消息处理通过配置回调分发到业务层