跳转至

OPPO

在进行 OPPO 推送适配之前,请确保您已经按照融云 Push 集成文档集成了融云 SDK;这是对 OPPO 设备进行特殊适配的前提条件。

前期准备

  1. 前往 OPPO 开放平台 注册企业开发者账号并进行认证。
  2. 开发者身份认证后,使用 OPPO 企业开发者账号,登陆 OPPO 开放平台 ,在“管理中心-软件&游戏-应用列表-选择应用-移动服务-消息推送”中完成 OPPO PUSH 权限申请。在完成权限申请后可在申请界面可获取接入所需的 AppKey、AppSecret、MasterSecret 等验证信息。
  3. 登录融云开发者后台在 应用标识 中设置 Android 第三方推送,将第 2 步获取的 AppKey 和 MasterSecret 填入 OPPO 推送设置项并保存。

OPPO 推送接入流程

1、导入推送 jar 包

进入 OPPO 开放平台-推送服务,下载 OPPO PUSH 客户端 SDK。将解压后将文件夹中 jar 包拷贝到您的工程的 libs 文件夹中。
或 gradle 配置文件添加maven仓库方式依赖

dependencies {

     ...

implementation 'com.heytap.mcssdk:mcssdk:2.0.2'

}

注意

2.10.2 版本开始,引入 com.heytap.mcssdk:mcssdk:2.0.2 ,低于 2.10.2 的版本,则导入 oppo_push-1.0.1.jar 包即可;

2、配置 AndroidManifest 文件

OPPO 推送服务 SDK 支持的最低安卓版本为 Android 4.0 系统。

在当前工程的 AndroidManifest.xml 文件中,添加权限列表和推送服务组件注册

权限列表(都要配置)

<uses-permission android:name="com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE"/>
<uses-permission android:name="com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE"/>

推送服务组件注册(都要配置,如果有继承 Service,则直接配置继承后的类)

<service
   android:name="com.heytap.mcssdk.PushService"
   android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE">
    <intent-filter>
     <action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE"/>
    </intent-filter>
</service>

<service
   android:name="com.heytap.mcssdk.AppPushService"
   android:permission="com.heytap.mcs.permission.SEND_MCS_MESSAGE">
    <intent-filter>
     <action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE"/>
    </intent-filter>
</service>

3、启用 OPPO 推送服务

在 application 中调用融云初始化接口之前,若没有开启其他推送则加入以下代码启用 OPPO 推送,并填入在申请界面获取的 AppKey、AppSecret。

PushConfig.Builder builder = new PushConfig.Builder();
builder.enableOppoPush(OPPO_App_KEY, OPPO_App_Secret);
RongPushClient.setPushConfig(builder.build());

注:若同时使用其他推送请在 builder 中启用其他推送,若使用旧版本的 RongPushClient 的 register 方式启用的推送,请改用此 RongPushClient#setPushConfig 方式由 builder 启用各推送。

推送通道选择策略

由于并非所有的 OPPO 手机都支持 OPPO 推送,所以仅在支持 OPPO 推送的 OPPO 手机上使用 OPPO 推送,在不支持 OPPO 推送的 OPPO 手机上使用融云默认推送。

由于融云推送属于应用级别的推送,会受系统各种权限限制,我们建议您在使用时,在设置里打开自启动权限和通知权限,或者勾选“信任此应用”等,以提高推送到达率。

通知栏点击事件

点击通知栏时会跳转到您应用桌面入口所对应的 Activity,并在 Intent 通过 getIntent().getExtras() 方式获取的 Bundle 中附带以下内容。

sdkVersion: SDK 版本(如:2.10.2)
isShowPushContent:是否显示推送内容(如:1)
rc:推送内容(如:{"conversationType":"1","fromUserId":"发送者用户id","id":"XXXX-XXXX-XXXX-XXXX","objectName":"RC:TxtMsg","sourceType":"0","tId":"接受者用户id"})
timestamp:时间戳
appId:AppKey
channelType:会话类型整形类型(如:1)
receiverUserId:接收消息用户 id
clientOs:操作系统
packageName:包名
content:消息内容
objectName:消息类型名(如:RC:TxtMsg)
fromUserName:用户名称

然后可以通过以下代码跳转到对应的会话界面中

Bundle extras = getIntent().getExtras();
JSONObject rc = new JSONObject(extras.getString("rc"));
Conversation.ConversationType conversationType = 
    Conversation.ConversationType.setValue(rc.getInt("conversationType"));
String targetId = rc.getString("fromUserId");
RongIM.getInstance().startConversation(context, conversationType, targetId, "");

常见问题

接收 OPPO 推送需要用户的 oppo 手机开启应用的通知权限。

OPPO 推送暂时只支持通知栏消息的推送。消息下发到 OS 系统模块并由系统通知模块展示,在用户点击通知前,不启动应用。

OPPO 推送的机型和规则等相关内容请参考 OPPO PUSH FAQ