魅族
在进行魅族推送适配之前,请确保您已经按照融云 Push 集成文档集成了融云 SDK;这是对魅族设备进行特殊适配的前提条件,融云 SDK 2.9.0 版本开始支持魅族推送功能。
前期准备¶
在进行魅族推送适配之前,请确保已经按照融云 Push 集成文档集成了融云 SDK;这是对魅族设备进行特殊适配的前提条件,融云 SDK 2.9.0 版本开始支持魅族推送功能。
前往 Flyme 开放平台 注册账号并通过认证.
开发者身份认证后,进入 魅族推送平台 创建应用,并记录下应用的 AppID、AppKey、AppSecret。
登录融云开发者后台在应用标识中设置 Android 第三方推送,将第 2 步获取的魅族 AppSecret 填入魅族推送设置项并保存。
接入流程¶
添加依赖¶
在应用的 builg.gradle 下面添加如下依赖
dependencies {
compile 'com.meizu.flyme.internet:push-internal:3.6.+@aar'
}
添加配置文件¶
在应用的 AndroidManifest.xml 里增加如下配置。
android:name="com.meizu.flyme.push.permission.RECEIVE"/>
android:name="您的包名.push.permission.MESSAGE"
android:protectionLevel="signature"/>
android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK"/>
/>
启用推送服务¶
在调用融云初始化 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 进行拦截即可跳转
android:name="您的会话界面 Activity">
android:host="你的 ApllicationId"
android:path="/conversation/"
android:scheme="rong" />
同时点击通知栏时还会跳转到您应用桌面入口所对应的 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。