跳转至

魅族

在进行魅族推送适配之前,请确保您已经按照融云 Push 集成文档集成了融云 SDK;这是对魅族设备进行特殊适配的前提条件,融云 SDK 2.9.0 版本开始支持魅族推送功能。

前期准备

在进行魅族推送适配之前,请确保已经按照融云 Push 集成文档集成了融云 SDK;这是对魅族设备进行特殊适配的前提条件,融云 SDK 2.9.0 版本开始支持魅族推送功能。

  1. 前往 Flyme 开放平台 注册账号并通过认证.

  2. 开发者身份认证后,进入 魅族推送平台 创建应用,并记录下应用的 AppID、AppKey、AppSecret。

  3. 登录融云开发者后台在应用标识中设置 Android 第三方推送,将第 2 步获取的魅族 AppSecret 填入魅族推送设置项并保存。

接入流程

添加依赖

在应用的 builg.gradle 下面添加如下依赖

dependencies {
  compile 'com.meizu.flyme.internet:push-internal:3.6.+@aar'
}
添加配置文件

在应用的 AndroidManifest.xml 里增加如下配置。

<!-- MeiZu 配置开始 < -->
<!-- 兼容 flyme5.0 以下版本,魅族内部集成 pushSDK 必填,不然无法收到 消息-->
<uses-permission
    android:name="com.meizu.flyme.push.permission.RECEIVE"/>
<permission
    android:name="您的包名.push.permission.MESSAGE"
    android:protectionLevel="signature"/>
<uses-permission android:name="您的包名.push.permission.MESSAGE"/>
<!-- 兼容 flyme3.0 配置权限-->
<uses-permission android:name="com.meizu.c2dm.permission.RECEIVE" />
<!-- MeiZu 配置结束 < -->

<application
<!-- MeiZu 配置开始 < -->
        <receiver android:name="io.rong.push.platform.meizu.MeiZuReceiver">
        <intent-filter>
            <!-- 接收 push 消息 -->
            <action android:name="com.meizu.flyme.push.intent.MESSAGE"/>
            <!-- 接收 register 消息 -->
            <action
                android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
            <!-- 接收 unregister 消息-->
            <action
                android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK"/>
            />
            <!-- 兼容低版本 Flyme3 推送服务配置 -->
            <action android:name="com.meizu.c2dm.intent.REGISTRATION"/>
            <action android:name="com.meizu.c2dm.intent.RECEIVE" />
            <category android:name="您的包名"/>
        </intent-filter>
         </receiver>
        <!-- MeiZu 配置结束 < -->
</application>
启用推送服务

在调用融云初始化 API (即 RongIM.init() 或 RongIMClient.init()) 之前,将 PushConfig 里的魅族推送开关打开。如果没有 PushConfig 对象,则需要新建一个,并进行相应配置。

PushConfig config = new PushConfig.Builder()
        .enableMiPush("", "") //配置小米推送
        .enableHWPush(true)  // 配置华为推送
        .enableMeiZuPush("","") //配置魅族推送
        .build();
RongPushClient.setPushConfig(config);
RongIM.init(this);

通知栏点击事件

目前魅族点击通知栏时推回调 io.rong.push.platform.meizu.MeiZuReceiver#onNotificationClicked 方法 在以上方法中会发送广播并触发继承 PushMessageReceiver 类的 onNotificationMessageClicked 方法。 在此方法中的参数 PushNotificationMessage 中可以获得以下信息

String pushId;    //对应推送消息的唯一Id,如果是消息转push,则为消息的uid
RongPushClient.ConversationType conversationType;  //会话类型
String objectName;  // 消息类型:RC:Txt RC:Img ...
String senderId;  // 发送者ID
String senderName; // 发送者名称
Uri senderPortrait;  //发送者头像地址
String targetId;        // 目标Id。ex: 群里的某人发了一条消息,则targetId为群Id,senderId为群里的这个用户的Id。
String targetUserName;  //目标名字。
String toId; //该推送的目标用户。
String pushTitle;  //推送消息的标题
String pushContent; //推送消息内容
String pushData;    // 客户端发送push消息时的附加字段
String isFromPush;  //是push消息时为true, 后台消息时为false
PushSourceType sourceType; //推送来源。

当重写 onNotificationMessageClicked 返回 false 时, SDk 会以以下 action 进行跳转 Activity

rong://【你的 ApllicationId】/conversation/private?targetId=【目标 targetId】&title=【推送标题】&isFromPush=true

当在 AndroidManifest.xml 中,您的会话界面 Activity 中加入 Intent-filter 进行拦截即可跳转

<activity
    android:name="您的会话界面 Activity">

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data
            android:host="你的 ApllicationId"
            android:path="/conversation/"
            android:scheme="rong" />
    </intent-filter>
</activity>

同时点击通知栏时还会跳转到您应用桌面入口所对应的 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:用户名称

注意:所以当您在 onNotificationMessageClicked 方法中返回 false,会先跳转到桌面入口对应的 Activity ,然后跳转到注册接受 rong://【你的 ApllicationId】/conversation/ 所对应 Activity。