IM 即时通讯
Android
开发指南

集成 vivo 推送

更新时间: 2023/08/29 11:22:48

NIM SDK 6.3.0 之后版本新增支持 vivo 推送。

本文主要介绍如何集成 vivo 厂商的离线推送通道,使消息通过 vivo 推送服务离线推送至未在线的用户。

集成流程

步骤 1:在vivo 开放平台创建应用并启用推送服务

若已在 vivo 开放平台创建应用,则忽略该步骤。更多 vivo 推送服务的信息请参考vivo 推送接入流程

  1. vivo 开放平台 注册开发者账号并完成认证,具体请参见企业开发者注册

  2. 登录vivo 开放平台,单击应用管理,选择应用并单击创建应用

    vivo应用管理.png

    vivo创建应用.png

  3. 填写应用包名、应用名称、上传应用 ICON,然后单击创建完成应用的创建。

    vivo创建.png

  4. 上传 APK 包,完善其他信息后,单击提交,等待审核。审核通过上架后,在 vivo 应用商店中可查看。

  5. 进入vivo 推送服务,单击立即接入

    vivo接入.png

  6. 单击推送申请,在申请页面选择软件包类型,目标应用等信息后,提交申请。

    vivo推送申请.png

    vivo提交申请.png

  7. 提交后,请关注开放平台应用的上架状态,开发者可在申请页面查看审核结果。

  8. 应用上架后,选择左侧导航栏的应用信息,查看应用的 AppID、AppKey、AppSecret 等信息。

    vivo应用信息.png

步骤 2:在云信控制台添加 vivo 推送证书

  1. 云信控制台首页应用管理选择应用进入应用配置页面,单击证书管理页签。

  2. Android推送证书下单击添加证书,选择证书类型为 VIVO,配置 vivo 推送相关信息。

    vivo推送.png

    云信推送证书字段对应 vivo 应用的字段信息
    证书名称用户自定义推送证书名称,最大 32 字符
    对应初始化 NIM SDK 时需传入的推送证书信息中的 vivoCertificateName
    应用包名对应 vivo 应用的应用包名,最大 1000 字符
    AppID对应 vivo 应用的 AppID,最大 1000 字符
    AppSecret对应 vivo 应用的 AppSecret,最大 5000 字符
    Appkey对应 vivo 应用的 AppKey,最大 100 字符
  3. 根据界面提示,在该对话框内配置证书类型和证书名称等信息。

    其中的“证书名称”即为初始化 SDK 时需传入的推送信息中的vivoCertificateName

步骤 3:导入 vivo 推送 SDK

将 vivo 推送客户端 SDK 添加到您的 Android 项目。vivo 推送的客户端 SDK 集成,具体可参考集成指南

NIM SDK 开发版和稳定版当前兼容的 vivo 推送版本为 vivo_pushsdk_v3.0.0.4_484

将下载的 pushOpenClient_vxxxxxx_release.jar 文件拷贝到开发者的项目路径的 app/libs 目录下;然后在该.jar文件上右键添加为依赖。

  1. 下载 vivo_pushSDK,并将下载的 aar 文件拷贝到您的项目路径的 app/libs 目录。

  2. 在项目 app 目录下的 build.gradle 添加 aar 依赖。

    dependencies {
        implementation fileTree(include: ['*.jar'],   dir: 'libs')
        implementation   files("libs/vivo_pushSDK_v3.0.0.4_484.aar")
    }
    

步骤 4:AndroidManifest.xml 配置

  1. 在 app/src/main 目录中,打开 AndroidManifest.xml 文件,添加对应权限。

    <!-- 配置的 service, activity, receiver -->
    <service
        android:name="com.vivo.push.sdk.service.CommandClientService"
        android:permission="com.push.permission.UPSTAGESERVICE"
        android:exported="true"/>
    <activity
        android:name="com.vivo.push.sdk.LinkProxyClientActivity"
        android:exported="false"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
    
    <receiver android:name="com.netease.nimlib.mixpush.vivo.VivoPushReceiver">
        <intent-filter>
            <!-- 接收 push 消息 -->
            <action android:name="com.vivo.pushclient.action.RECEIVE"/>
        </intent-filter>
    </receiver>
    
  2. 在 AndroidManifest.xml 中,添加配置 App ID 与 App Key。

    <meta-data
        android:name="api_key"
        android:value="{你的 vivo 推送 app key}"/>
    <meta-data
        android:name="app_id"
        android:value="{你的 vivo 推送的 app id}"/>
    

步骤 5:防止代码混淆

如果您的应用使用了代码混淆,在 proguard-rules.pro 配置文件中添加以下配置以防止 vivo SDK 的代码被混淆:

   -dontwarn com.vivo.push.**
   -keep class com.vivo.push.**{*; } 
   -keep class com.vivo.vms.**{*; }

集成须知:推送兼容性

若您的自身业务体系,也需要接入 vivo 推送,则需要考虑自身业务体系的 vivo 推送与云信消息的 vivo 推送兼容。

兼容需要完成以下两个步骤:

  1. 新建广播接收器

    对于 vivo 推送,为了接收推送消息,vivo push SDK 要求您自定义一个继承自 OpenClientPushMessageReceiver 的 BroadcastReceiver ,并注册到 AndroidManifest.xml。由于vivo 的特殊处理,同时注册多个继承自 OpenClientPushMessageReceiver 的 BroadcastReceiver 会存在收不到消息的情况,要保证自身业务体系的 vivo 推送与云信消息的 vivo 推送兼容,您需要新建广播接收器,从继承 OpenClientPushMessageReceiver 改为继承 VivoPushMessageReceiver。VivoPushMessageReceiver 为云信提供,推送消息首先被 NIM SDK 接收,如果是自身体系的推送消息,NIM SDK 会将消息传递给 VivoPushMessageReceiver。

    /**
    * 以下这些方法运行在非 UI 线程中, 与vivo SDK 的 OpenClientPushMessageReceiver 方法一一对应。
    * 当开发者自身也接入vivo推送,则应将继承 OpenClientPushMessageReceiver 改为继承 VivoPushMessageReceiver,其他不变
    */
    
    public class VivoPushMessageReceiver extends BroadcastReceiver {
    
        @Override
        public final void onReceive(Context context, Intent intent) {
        }
    
        public void onNotificationMessageClicked(Context context, UPSNotificationMessage upsNotificationMessage) {
        }
    
        public void onReceiveRegId(Context context, String s) {
        }
    }
    
  2. 配置新广播的名称

    在将广播接收器改为继承 VivoPushMessageReceiver 之后,将该广播在 AndroidManifest 中配置如下,开发者只需将广播名称 VivoPushMessageReceiver 替换成自身的广播名。此外,请不要为此 Receiver 配置 priority

    <receiver android:name="xxx.VivoPushMessageReceiver">
        <intent-filter>
            <action android:name="com.vivo.pushclient.action.RECEIVE" />
        </intent-filter>
    </receiver>
    

vivo 平台限制

消息推送类型配置

vivo 的推送消息分为运营消息和系统消息,需要在推送时进行指定,若未指定,vivo 默认为运营类消息。

vivo 推送消息的类型通过 classification 来判断。

  • 您可以直接在控制台上配置默认的推送消息类型。

    1. 控制台首页应用管理选择应用进入应用配置页面,然后单击 IM即时通讯 专业版下的功能配置按钮进入 IM 即时通讯配置页。

    2. 在顶部选择基础功能页签,选择第三方厂商消息分类,并单击子功能配置

    3. 选择对应的第三方厂商,单击编辑,选择类型后保存

  • 也可以通过配置云信 NIM SDK 中消息体的 pushPayload 来实现。

    在其中添加以 vivoField 为 key 的 Map 或者 JsonObject 数据即可,数据格式参照 vivo 文档

    示例代码如下:

    int classification = vivoClassificationCheckBox.isChecked() ? 1 : 0;
    Map<String, Object> pushPayload = msg.getPushPayload();
    pushPayload = pushPayload == null ? new HashMap<>() : pushPayload;
    
    //vivoField
    Map<String, Object> vivoField = new HashMap<>();
    vivoField.put("classification", classification);
    pushPayload.put("vivoField", vivoField);
    

对于传给 vivo 推送平台的消息类型优先级:

  • 您上传的消息体的 pushPayload中有分类(classification)字段,则使用 pushPayload中的字段值。
  • 如果消息体的 pushPayload中未传入分类(classification)字段,,则使用默认的推送消息类型(在云信控制台设置的消息类型)。
  • 如果消息体的 pushPayload中未传入分类(classification)字段,也没有在云信控制台上配置推送消息类型,则该推送消息不会添加分类字段。

限额说明

推送消息限额说明

消息类型量级增量申请
系统消息
  • 若订阅用户数*3 < 1W,则最多可推送的量级为 1W
  • 若订阅用户数*3 > 1W,则最多可推送的量级为 3 倍 SDK 订阅数
邮件申请,具体请参考推送消息分类说明
运营消息
  • 若订阅用户数 < 1W,则最多可推送的量级为 1W
  • 若订阅用户数 > 1W,则最多可推送的量级为 SDK 订阅数
联系商务申请
测试消息
  • 审核中的应用,推送权限为“受限”,只能通过 API,向在 Web 页面中添加的测试设备发送测试消息,测试设备数量上限为 20 个,测试消息不受量级和频控限制
  • 发送测试消息时注意填写pushMode=1(0:正式推送;1:测试推送;不填默认为0)。若未填写,当文案相同时,将被当做重复运营消息被去重

接收消息限额说明

  • 用户每天可以接收单应用的消息条数。
    • 系统消息:无限制
    • 运营消息:用户单应用每日接收条数上限5条,以“到达量”是否超过5条为准;在发送时校验单用户是否到达5条,超限则计入管控量。
    • 用户单应用接收条数限制以“到达量”是否超过5条为准,在发送时校验单用户是否到达5条,超限则计入管控量。
  • 运营消息超过5条后,消息会被直接丢弃,不会返回任何信息。

当前运营消息超过5条后,消息会被直接丢弃,不会返回任何信息,需要通过“在线诊断”中查询具体原因。

额度查询指引

在【vivo 开放平台】>【推送统计】>【推送数据】中可以查看 SDK 订阅数和可发送的消息总量,详情请参见 vivo 推送平台使用指南

推送速度

  • 应用推送速度配置策略:推送QPS根据SDK订阅数自动调整,默认最低3000/秒,最高5000/秒。

    Push SDK订阅数 推送速度
    0-900W 3000
    900W-1200W 4000
    1200W以上 5000
  • 目前接口有调用频率限制。

  • vivo 推送系统目前支持 100 万级并发。

此文档是否对你有帮助?
有帮助
去反馈
  • 集成流程
  • 步骤 1:在vivo 开放平台创建应用并启用推送服务
  • 步骤 2:在云信控制台添加 vivo 推送证书
  • 步骤 3:导入 vivo 推送 SDK
  • 步骤 4:AndroidManifest.xml 配置
  • 步骤 5:防止代码混淆
  • 集成须知:推送兼容性
  • vivo 平台限制
  • 消息推送类型配置
  • 限额说明
  • 推送消息限额说明
  • 接收消息限额说明
  • 额度查询指引
  • 推送速度