Skip to content
v1
文档/Android SDK/开发指南

华为 Push

1. 控制台配置

请先在 AppGallery Connect 创建应用并完成华为 Push 配置。宿主应用必须使用与华为项目一致的:

  • Android 包名
  • 签名证书指纹
  • agconnect-services.json

agconnect-services.json 由宿主应用提供,不能打包进 imsdk-push-huawei AAR。华为 App ID 从该文件读取,不在客户端再维护第二份 App ID。华为服务端密钥也不能写入 APK。

2. 添加依赖

kotlin
dependencies {
    implementation("com.beework.im:chat:<version>")
    implementation("com.beework.im:imsdk-push:<version>")
    implementation("com.beework.im:imsdk-push-huawei:<version>")
}

华为 Provider 会传递 imsdk-push、Huawei Push SDK 和 AG Connect Core。AG Connect 的插件和 agconnect-services.json 仍由宿主工程按华为官方要求配置。

3. 注册 Provider

agconnect-services.json 放入宿主模块要求的位置后,在 Application.onCreate() 中注册:

kotlin
import com.foreveross.imsdk_push_huawei.api.HuaweiPush

HuaweiPush.register(
    context = applicationContext,
)

等价的基础入口为:

kotlin
BimPushManager.getInstance().registerPush(
    context = applicationContext,
    config = HuaweiPushConfig,
)

注册默认会请求 Token。只初始化而不自动请求时传入 autoRegister = false

4. Manifest 与进程

Provider 会通过 Android Library Manifest 合并 HmsMessageService。宿主不需要复制 Service 声明,但必须在宿主主进程初始化 Push;在独立进程中初始化会被 Provider 判定为无效配置。

收到 Token 后,imsdk-push 负责缓存、去重、绑定当前 IM 账号并同步服务端。华为 Token 或网络失败不会阻断 IM 登录和消息同步。

5. 状态与点击路由

kotlin
val manager = BimPushManager.getInstance()

manager.addListener { diagnostic ->
    if (diagnostic.provider == BimPushProvider.HUAWEI) {
        println("huawei push status=${diagnostic.status}")
    }
}

manager.addPushClickListener { event ->
    // 使用 event.uri / event.extras 打开业务页面
}

华为通知和透传回调由 Provider 转换为 Push 诊断或统一点击事件;宿主负责最终业务路由,不需要声明华为专用 Scheme。

6. 排查重点

  • agconnect-services.json 是否属于当前包名和签名证书对应的 AppGallery Connect 项目。
  • AG Connect 插件和 Huawei Push 依赖是否由宿主正确配置。
  • 是否在主进程初始化,且设备具备华为 HMS 能力。
  • 是否真实取得 HMS Token;构建成功不能证明通知已送达。
  • Token、项目密钥和业务 payload 不要写入日志或提交到仓库。