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

小米 Push

1. 控制台配置

请先在小米开放平台创建应用并申请以下凭据:

  • AppId
  • AppKey

小米应用的包名和签名证书必须与宿主 Android 应用一致。AppSecret 只用于服务端配置,不能放入客户端代码或 Push 配置。

2. 添加依赖

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

imsdk-push-xiaomi 会传递 imsdk-push 和小米 Push SDK。不要在核心 chat 或基础 imsdk-push 中手动加入小米 SDK。

3. 注册 Provider

推荐在 Application.onCreate() 中显式注册:

kotlin
import com.foreveross.imsdk_push_xiaomi.api.XiaomiPush

XiaomiPush.register(
    context = applicationContext,
    appId = "<xiaomi-app-id>",
    appKey = "<xiaomi-app-key>",
)

等价的基础入口为:

kotlin
BimPushManager.getInstance().registerPush(
    context = applicationContext,
    config = XiaomiPushConfig(
        appId = "<xiaomi-app-id>",
        appKey = "<xiaomi-app-key>",
    ),
)

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

4. Manifest 与进程

Provider 会通过 Android Library Manifest 合并小米回调 Receiver。宿主不需要复制 Receiver 声明,但必须保证 Push 在宿主主进程初始化;不要在独立进程中调用注册入口。

收到 Token 后,imsdk-push 会负责缓存、去重、绑定当前 IM 账号并同步服务端。小米回调失败不会改变 IM 登录结果。

5. 状态与点击路由

kotlin
val manager = BimPushManager.getInstance()

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

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

小米通知到达、透传和点击由 Provider 接收并转换为 Push 诊断或统一点击事件;宿主负责最终业务路由。宿主不需要声明小米专用 Scheme。

6. 排查重点

  • 控制台应用包名、签名证书和宿主 applicationId 是否完全一致。
  • AppIdAppKey 是否来自同一个小米应用。
  • 是否在主进程初始化,且设备使用支持小米 Push 的环境。
  • 是否真实取得 Token;仅 Gradle 构建成功不能证明通知能够送达。
  • Token、AppKey 和业务 payload 不要写入日志或提交到仓库。