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

vivo Push

1. 控制台配置

在 vivo 开放平台创建应用并开通消息推送,准备:

  • AppId
  • ApiKey
  • 与控制台一致的应用包名和发布签名。

服务端鉴权密钥不能写入 Android 工程或 APK。vivo Push SDK 会处理设备和应用信息,必须先按 vivo 推送 SDK 隐私安全说明 完成隐私披露并取得用户同意,再初始化 SDK。

2. 添加依赖

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

imsdk-push-vivo 会传递 imsdk-push 和 vivo Push SDK。不要在核心 chat 或基础 imsdk-push 中重复加入 vivo SDK。

3. 配置应用参数

在宿主 application 下配置 vivo 控制台提供的参数:

xml
<meta-data
    android:name="com.vivo.push.app_id"
    android:value="${VIVO_PUSH_APP_ID}" />
<meta-data
    android:name="com.vivo.push.api_key"
    android:value="${VIVO_PUSH_API_KEY}" />

参数可以通过构建类型或 product flavor 的 manifestPlaceholders 注入,不要把正式凭据提交到公共仓库。

4. 注册 Provider

建议在 Application.onCreate() 中、用户同意隐私政策后注册:

kotlin
import com.foreveross.imsdk_push_vivo.api.VivoPush

VivoPush.register(
    context = applicationContext,
)

等价的基础入口为:

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

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

5. Manifest 与进程

Provider 会通过 Android Library Manifest 合并 vivo Push 所需的 Receiver、Service 和 Activity。宿主不需要复制厂商组件声明,但必须:

  • 在宿主主进程初始化 Push。
  • 确保 AppIdApiKey、包名和签名配置一致。
  • Android 13 及以上申请 POST_NOTIFICATIONS 运行时权限。
  • 检查最终 Manifest 合并结果,避免宿主已有 vivo Push 组件产生冲突。

收到 Token 后,imsdk-push 会负责缓存、去重、绑定当前 IM 账号并同步服务端。

6. 状态与点击路由

kotlin
val manager = BimPushManager.getInstance()

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

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

vivo 通知点击由 Provider 转换为统一的 BimPushClickEvent,宿主负责最终业务路由。Token 和业务 payload 不要输出到日志。

7. 排查重点

  • 当前设备是否支持 vivo Push。
  • AppIdApiKey、应用包名和发布签名是否属于同一个 vivo 应用。
  • 是否在主进程、用户同意隐私政策后完成初始化。
  • 最终 Manifest 是否包含 vivo Push 所需组件,且不存在重复声明。
  • 是否真实取得 Token;仅 Gradle 构建成功不能证明通知能够送达。
  • 应使用 vivo 真机完成通知到达和点击路由验证。