-
-
Notifications
You must be signed in to change notification settings - Fork 133
推送平台说明
推送平台 | 平台名 | 平台码 | 模块名 | 客户端类 |
---|---|---|---|---|
极光推送 | JPush | 1000 | xpush-jpush | com.xuexiang.xpush.jpush.JPushClient |
友盟推送 | UMengPush | 1001 | xpush-umeng | com.xuexiang.xpush.umeng.UMengPushClient |
华为推送 | HuaweiPush | 1002 | xpush-huawei | com.xuexiang.xpush.huawei.HuaweiPushClient |
小米推送 | MIPush | 1003 | xpush-xiaomi | com.xuexiang.xpush.xiaomi.XiaoMiPushClient |
信鸽推送 | XGPush | 1004 | xpush-xg | com.xuexiang.xpush.xg.XGPushClient |
除此之外,如果你使用MQTT协议来做消息推送的话,我也同样提供了案例给你:XPush-MQTT
极光推送平台所有特性都支持。
-
友盟推送在进行XPush初始化的时候,除了在主进程中注册,还需要在channel中注册。
-
友盟推送不支持Tag和alias的获取
-
友盟推送不支持监听推送的连接状态。
-
信鸽推送不支持Tag和alias的获取
-
信鸽推送不支持监听推送的连接状态。
-
华为推送在注册之前需要安装最新的推送服务,否则将无法注册成功(库会自动弹出升级或者安装提示)
-
华为推送不支持所有Tag和alias的操作。
-
华为推送不支持接收通知到达事件。
-
小米推送一次只能操作一个Tag。
-
小米推送注销无结果反馈。
-
小米推送不支持监听推送的连接状态。
由于Android推送平台的众多,目前本项目不可能也没必要提供所有推送平台的集成库。如果你想使用的推送平台在我这没有找到对应的集成库的话,那么就需要你自己写一个了。
其实拓展一个第三方推送库也不是很难,只要遵循以下4步骤就可以完成了:
-
1.新建一个Android Library Module,然后将你准备集成的推送平台的依赖内容导入进来。这里包括引入推送依赖库或SDK、配置
AndroidManifest.xml
。 -
2.创建该推送平台的客户端XXXClient,实现IPushClient接口,并且重写对应的方法。其中
init
、register
、unRegister
、getPlatformCode
、getPlatformName
这5个方法是必须重写的。
IPushClient接口方法详细如下:
public interface IPushClient {
/**
* 初始化【必须】
*
* @param context
*/
void init(Context context);
/**
* 注册推送【必须】
*/
void register();
/**
* 注销推送【必须】
*/
void unRegister();
/**
* 绑定别名【别名是唯一的】
*
* @param alias 别名
*/
void bindAlias(String alias);
/**
* 解绑别名
*
* @param alias 别名
*/
void unBindAlias(String alias);
/**
* 获取别名
*/
void getAlias();
/**
* 增加标签
*
* @param tag 标签
*/
void addTags(String... tag);
/**
* 删除标签
*
* @param tag 标签
*/
void deleteTags(String... tag);
/**
* 获取标签
*/
void getTags();
/**
* @return 获取推送令牌
*/
String getPushToken();
/**
* 注意千万不要重复【必须】
* @return 获取平台码
*/
int getPlatformCode();
/**
* 注意千万不要重复【必须】
* @return 获取平台名
*/
String getPlatformName();
}
- 3.创建和重写三方消息推送的消息接收器(一般是重写Receiver)。重写三方推送的的接收透传消息和通知的方法,调用
XPush
的transmitXXX方法,将通知、透传消息、通知点击事件、以及其他事件,转发到XPush。
主要调用以下五个方法:
(1)XPush.transmitMessage(): 转发自定义(透传)消息.
(2)XPush.transmitNotification(): 转发通知到达消息.
(3)XPush.transmitNotificationClick(): 转发通知点击事件.
(4)XPush.transmitCommandResult(): 转发IPushClient命令执行结果.
(5)XPush.transmitConnectStatusChanged(): 转发推送连接状态发生改变的事件.
- 4.增加该推送平台对应的代码混淆配置信息。
以上即完成了推送平台的集成。剩下的就是在初始化XPush的时候对推送平台进行选择了.如果你看完了还是不会的话,你可以参考项目中的xpush-xiaomi和xpush-huawei.
推送消息转译实体,携带消息的原始数据
字段名 | 类型 | 备注 |
---|---|---|
mId | int | 消息ID / 状态 |
mTitle | String | 通知标题 |
mContent | String | 通知内容 |
mMsg | String | 自定义(透传)消息 |
mExtraMsg | String | 消息拓展字段 |
mKeyValue | String | 消息键值对 |
推送通知,由XPushMsg转化而来
字段名 | 类型 | 备注 |
---|---|---|
mId | int | 消息ID / 状态 |
mTitle | String | 通知标题 |
mContent | String | 通知内容 |
mExtraMsg | String | 消息拓展字段 |
mKeyValue | String | 消息键值对 |
自定义(透传)消息,由XPushMsg转化而来
字段名 | 类型 | 备注 |
---|---|---|
mMsg | String | 自定义(透传)消息 |
mExtraMsg | String | 消息拓展字段 |
mKeyValue | String | 消息键值对 |
IPushClient执行相关命令的结果信息实体
字段名 | 类型 | 备注 |
---|---|---|
mType | int | 命令类型 |
mResultCode | int | 结果码 |
mContent | String | 命令内容 |
mExtraMsg | String | 拓展字段 |
mError | String | 错误信息 |
命令的类型
命令名 | 命令码 | 备注 |
---|---|---|
TYPE_REGISTER | 2000 | 注册推送 |
TYPE_UNREGISTER | 2001 | 注销推送 |
TYPE_ADD_TAG | 2002 | 添加标签 |
TYPE_DEL_TAG | 2003 | 删除标签 |
TYPE_GET_TAG | 2004 | 获取标签 |
TYPE_BIND_ALIAS | 2005 | 绑定别名 |
TYPE_UNBIND_ALIAS | 2006 | 解绑别名 |
TYPE_GET_ALIAS | 2007 | 获取别名 |
TYPE_AND_OR_DEL_TAG | 2008 | 添加或删除标签 |
命令的结果码
结果名 | 结果码 | 备注 |
---|---|---|
RESULT_OK | 0 | 成功 |
RESULT_ERROR | 1 | 失败 |
推送连接状态
状态名 | 状态码 | 备注 |
---|---|---|
DISCONNECT | 10 | 已断开 |
CONNECTING | 11 | 连接中 |
CONNECTED | 12 | 已连接 |