XPush
一個輕量級芦昔、可插拔的Android消息推送框架。一鍵集成推送(極光推送娃肿、友盟推送咕缎、華為、小米推送等)料扰,提供有效的逼竞溃活機(jī)制,支持推送的拓展晒杈,充分解耦推送和業(yè)務(wù)邏輯嫂伞,解放你的雙手!
在提issue前,請先閱讀【提問的智慧】帖努,并嚴(yán)格按照issue模板進(jìn)行填寫撰豺,節(jié)約大家的時間。
在使用前拼余,請一定要仔細(xì)閱讀使用說明文檔,重要的事情說三遍V3谩!姿搜!
在使用前,請一定要仔細(xì)閱讀使用說明文檔,重要的事情說三遍@υ鳌>斯瘛!
在使用前躲惰,請一定要仔細(xì)閱讀使用說明文檔,重要的事情說三遍V路荨!础拨!
特征
集成方便氮块。只需幾行代碼即可實現(xiàn)推送的集成,目前已經(jīng)提供極光诡宗、友盟等推送渠道滔蝉,除此之外還可以根據(jù)自己的需要進(jìn)行擴(kuò)展。
兼容性強(qiáng)塔沃。目前已完美支持Android 9.0蝠引。
功能強(qiáng)大。支持推送相關(guān)的注冊蛀柴、注銷螃概,標(biāo)簽的增加、刪除鸽疾、獲取吊洼,別名的綁定、解綁制肮、獲取冒窍,推送的連接狀態(tài)獲取等操作,并能返回響應(yīng)的結(jié)果弄企;支持接收推送通知超燃、通知的點(diǎn)擊事件、自定義消息等推送類型拘领。
統(tǒng)一的消息訂閱意乓。框架提供了統(tǒng)一的消息訂閱渠道,無論你使用了何種推送方式届良,都可以在任何地方進(jìn)行推送消息的訂閱和取消訂閱笆凌,方便消息的接收和處理。
支持增加消息過濾器士葫。類似OkHttp中的攔截器乞而,可以對接收的消息進(jìn)行全局過濾,過濾出那些我們真正需要的推送消息慢显。
提供有效的弊δ#活機(jī)制。保證接入XPush的應(yīng)用消息推送的到達(dá)率和穩(wěn)定性荚藻,這也是很多推送框架所做不到的屋灌。
組成結(jié)構(gòu)
本框架借鑒了OnePush(目前已不維護(hù)了)中的部分思想,加之我3年消息推送的經(jīng)驗应狱,形成了如下幾個部分:
消息推送客戶端
IPushClient
:主要提供消息推送平臺的主要API共郭。消息推送事件轉(zhuǎn)發(fā)器
IPushDispatcher
:主要用于將第三方的消息推送事件轉(zhuǎn)發(fā)為XPush可識別的事件。消息推送接收器
IPushReceiver
:統(tǒng)一接收IPushDispatcher轉(zhuǎn)發(fā)過來的事件疾呻,是事件的接收中心除嘹。推送消息的被觀察者
IMessageObservable
:主要負(fù)責(zé)管理推送消息的訂閱和轉(zhuǎn)發(fā)。推送消息的過濾策略
IMessageFilterStrategy
:主要負(fù)責(zé)推送消息的過濾處理和管理岸蜗。
以上5個組成部分可以根據(jù)你自身的業(yè)務(wù)需求進(jìn)行自定義尉咕。
消息推送流程
在后臺發(fā)出一則推送消息后:
第三方推送平臺 --- (消息) ---> 第三方推送平臺內(nèi)部的接收消息的Receiver --->(重寫其接收的方法)---> IPushDispatcher ---> (轉(zhuǎn)發(fā)消息內(nèi)容為XPushMsg/XPushCommand)---> IPushReceiver ---> (如不使用XPushManager提供的消息管理,這里直接結(jié)束)
【使用XPushManager提供的消息管理】:---IPushReceiver---> XPushManager -----> IMessageFilterStrategy --->(對消息進(jìn)行過濾處理)---> IMessageObservable ---> (消息轉(zhuǎn)發(fā)到具體訂閱的地方)
為什么要做這個項目
做過Android消息推送的人都知道散吵,Android不僅設(shè)備碎片化嚴(yán)重龙考,推送平臺也是五花八門的。早在2017年工信部就號召所有的廠商來制定統(tǒng)一的Android消息推送平臺矾睦,可到現(xiàn)在也沒有下文(究其原因還是這其中的利益太大了晦款,誰也不想妥協(xié))。
可是我們也不能將希望全都寄托在這個完全沒有定數(shù)的事件上枚冗,代碼終歸要寫缓溅,功能終歸要上,與其受制于人赁温,不如自己革命坛怪,搞一個自己能控制的消息推送全平臺解決方案來得靠譜。
之前在QQ交流群里一直有人希望我開源一個消息推送框架股囊,其實我在上一家公司的時候就寫了一個推送框架袜匿,只不過捆綁業(yè)務(wù)太深,加之避開泄密之嫌稚疹,也就沒有開源的必要居灯。此次的推送框架完全是重新寫了一個,加之全新的設(shè)計,會使框架更加通用怪嫌,靈活义锥。
快速集成指南
添加Gradle依賴
1.先在項目根目錄的 build.gradle 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2.添加XPush主要依賴:
dependencies {
...
//推送核心庫
implementation 'com.github.xuexiangjys.XPush:xpush-core:1.0.0'
//推送保活庫
implementation 'com.github.xuexiangjys.XPush:keeplive:1.0.0'
}
3.添加第三方推送依賴(根據(jù)自己的需求進(jìn)行添加岩灭,當(dāng)然也可以全部添加)
dependencies {
...
//選擇你想要集成的推送庫
implementation 'com.github.xuexiangjys.XPush:xpush-jpush:1.0.0'
implementation 'com.github.xuexiangjys.XPush:xpush-umeng:1.0.0'
implementation 'com.github.xuexiangjys.XPush:xpush-huawei:1.0.0'
implementation 'com.github.xuexiangjys.XPush:xpush-xiaomi:1.0.0'
}
初始化XPush配置
1.注冊消息推送接收器拌倍。方法有兩種,選其中一種就行了噪径。
如果你想使用
XPushManager
提供的消息管理苹祟,直接在AndroidManifest.xml中注冊框架默認(rèn)提供的XPushReceiver
苦丁。當(dāng)然你也可以繼承XPushReceiver
葫掉,并重寫相關(guān)方法款违。如果你想實現(xiàn)自己的消息管理舆乔,可繼承
AbstractPushReceiver
類领猾,重寫里面的方法跳座,并在AndroidManifest.xml中注冊杯巨。
<!--自定義消息推送接收器-->
<receiver android:name=".push.CustomPushReceiver">
<intent-filter>
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_CONNECT_STATUS_CHANGED" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_NOTIFICATION" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_NOTIFICATION_CLICK" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_MESSAGE" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_COMMAND_RESULT" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<!--默認(rèn)的消息推送接收器-->
<receiver android:name="com.xuexiang.xpush.core.receiver.impl.XPushReceiver">
<intent-filter>
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_CONNECT_STATUS_CHANGED" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_NOTIFICATION" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_NOTIFICATION_CLICK" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_MESSAGE" />
<action android:name="com.xuexiang.xpush.core.action.RECEIVE_COMMAND_RESULT" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
注意珍德,如果你的Android設(shè)備是8.0及以上的話练般,靜態(tài)注冊的廣播是無法正常生效的,解決的方法有兩種:
動態(tài)注冊消息推送接收器
修改推送消息的發(fā)射器
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//Android8.0靜態(tài)廣播注冊失敗解決方案一:動態(tài)注冊
XPush.registerPushReceiver(new CustomPushReceiver());
//Android8.0靜態(tài)廣播注冊失敗解決方案二:修改發(fā)射器
XPush.setIPushDispatcher(new Android26PushDispatcherImpl(CustomPushReceiver.class));
}
2.在AndroidManifest.xml的application標(biāo)簽下锈候,添加第三方推送客戶端實現(xiàn)類.
需要注意的是薄料,這里注冊的PlatformName
和PlatformCode
必須要和推送客戶端實現(xiàn)類中的一一對應(yīng)才行。
<!--name格式:XPush_[PlatformName]_[PlatformCode]-->
<!--value格式:對應(yīng)客戶端實體類的全類名路徑-->
<!--如果引入了xpush-jpush庫-->
<meta-data
android:name="XPush_JPush_1000"
android:value="com.xuexiang.xpush.jpush.JPushClient" />
<!--如果引入了xpush-umeng庫-->
<meta-data
android:name="XPush_UMengPush_1001"
android:value="com.xuexiang.xpush.umeng.UMengPushClient" />
<!--如果引入了xpush-huawei庫-->
<meta-data
android:name="XPush_HuaweiPush_1002"
android:value="com.xuexiang.xpush.huawei.HuaweiPushClient" />
<!--如果引入了xpush-xiaomi庫-->
<meta-data
android:name="XPush_MIPush_1003"
android:value="com.xuexiang.xpush.xiaomi.XiaoMiPushClient" />
3.添加第三方AppKey和AppSecret.
這里的AppKey和AppSecret需要我們到各自的推送平臺上注冊應(yīng)用后獲得泵琳。注意如果使用了xpush-xiaomi,那么需要在AndroidManifest.xml添加小米的AppKey和AppSecret(注意下面的“\ ”必須加上摄职,否則獲取到的是float而不是String,就會導(dǎo)致id和key獲取不到正確的數(shù)據(jù))获列。
<!--極光推送靜態(tài)注冊-->
<meta-data
android:name="JPUSH_CHANNEL"
android:value="default_developer" />
<meta-data
android:name="JPUSH_APPKEY"
android:value="a32109db64ebe04e2430bb01" />
<!--友盟推送靜態(tài)注冊-->
<meta-data
android:name="UMENG_APPKEY"
android:value="5d5a42ce570df37e850002e9" />
<meta-data
android:name="UMENG_MESSAGE_SECRET"
android:value="4783a04255ed93ff675aca69312546f4" />
<!--華為HMS推送靜態(tài)注冊-->
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="101049475"/>
<!--小米推送靜態(tài)注冊谷市,下面的“\ ”必須加上,否則將無法正確讀取-->
<meta-data
android:name="MIPUSH_APPID"
android:value="\ 2882303761518134164"/>
<meta-data
android:name="MIPUSH_APPKEY"
android:value="\ 5371813415164"/>
4.在Application中初始化XPush
初始化XPush的方式有兩種击孩,根據(jù)業(yè)務(wù)需要選擇一種方式就行了:
- 靜態(tài)注冊
/**
* 靜態(tài)注冊初始化推送
*/
private void initPush() {
XPush.debug(BuildConfig.DEBUG);
//靜態(tài)注冊迫悠,指定使用友盟推送客戶端
XPush.init(this, new UMengPushClient());
XPush.register();
}
- 動態(tài)注冊
/**
* 動態(tài)注冊初始化推送
*/
private void initPush() {
XPush.debug(BuildConfig.DEBUG);
//動態(tài)注冊,根據(jù)平臺名或者平臺碼動態(tài)注冊推送客戶端
XPush.init(this, new IPushInitCallback() {
@Override
public boolean onInitPush(int platformCode, String platformName) {
String romName = RomUtils.getRom().getRomName();
if (romName.equals(SYS_EMUI)) {
return platformCode == HuaweiPushClient.HUAWEI_PUSH_PLATFORM_CODE && platformName.equals(HuaweiPushClient.HUAWEI_PUSH_PLATFORM_NAME);
} else if (romName.equals(SYS_MIUI)) {
return platformCode == XiaoMiPushClient.MIPUSH_PLATFORM_CODE && platformName.equals(XiaoMiPushClient.MIPUSH_PLATFORM_NAME);
} else {
return platformCode == JPushClient.JPUSH_PLATFORM_CODE && platformName.equals(JPushClient.JPUSH_PLATFORM_NAME);
}
}
});
XPush.register();
}
如何使用XPush
1巩梢、推送的注冊和注銷
通過調(diào)用
XPush.register()
创泄,即可完成推送的注冊。通過調(diào)用
XPush.unRegister()
括蝠,即可完成推送的注銷鞠抑。通過調(diào)用
XPush.getPushToken()
,即可獲取消息推送的Token(令牌)忌警。通過調(diào)用
XPush.getPlatformCode()
搁拙,即可獲取當(dāng)前使用推送平臺的碼。
2、推送的標(biāo)簽(tag)處理
通過調(diào)用
XPush.addTags()
感混,即可添加標(biāo)簽(支持傳入多個)端幼。通過調(diào)用
XPush.deleteTags()
,即可刪除標(biāo)簽(支持傳入多個)弧满。通過調(diào)用
XPush.getTags()
婆跑,即可獲取當(dāng)前設(shè)備所有的標(biāo)簽。
需要注意的是庭呜,友盟推送目前暫不支持標(biāo)簽的獲取滑进,華為推送不支持標(biāo)簽的所有操作,小米推送每次只支持一個標(biāo)簽的操作募谎。
3扶关、推送的別名(alias)處理
通過調(diào)用
XPush.bindAlias()
,即可綁定別名数冬。通過調(diào)用
XPush.unBindAlias()
节槐,即可解綁別名。通過調(diào)用
XPush.getAlias()
拐纱,即可獲取當(dāng)前設(shè)備所綁定的別名铜异。
需要注意的是,友盟推送目前暫不支持別名的獲取秸架,華為推送不支持別名的所有操作揍庄。
4、推送消息的接收
通過調(diào)用
XPushManager.get().register()
方法东抹,注冊消息訂閱MessageSubscriber
蚂子,即可在任意地方接收到推送的消息。通過調(diào)用
XPushManager.get().unregister()
方法缭黔,即可取消消息的訂閱食茎。
這里需要注意的是,消息訂閱的回調(diào)并不一定是在主線程馏谨,因此在回調(diào)中如果進(jìn)行了UI的操作董瞻,一定要確保切換至主線程。下面演示代碼中使用了我的另一個開源庫XAOP,只通過@MainThread
注解就能自動切換至主線程,可供參考田巴。
/**
* 初始化監(jiān)聽
*/
@Override
protected void initListeners() {
XPushManager.get().register(mMessageSubscriber);
}
private MessageSubscriber mMessageSubscriber = new MessageSubscriber() {
@Override
public void onMessageReceived(CustomMessage message) {
showMessage(String.format("收到自定義消息:%s", message));
}
@Override
public void onNotification(Notification notification) {
showMessage(String.format("收到通知:%s", notification));
}
};
@MainThread
private void showMessage(String msg) {
tvContent.setText(msg);
}
@Override
public void onDestroyView() {
XPushManager.get().unregister(mMessageSubscriber);
super.onDestroyView();
}
5钠糊、推送消息的過濾處理
通過調(diào)用
XPushManager.get().addFilter()
方法,可增加對訂閱推送消息的過濾處理壹哺。對于一些我們不想處理的消息抄伍,可以通過消息過濾器將它們篩選出來。通過調(diào)用
XPushManager.get().removeFilter()
方法管宵,即可去除消息過濾器截珍。
/**
* 初始化監(jiān)聽
*/
@Override
protected void initListeners() {
XPushManager.get().addFilter(mMessageFilter);
}
private IMessageFilter mMessageFilter = new IMessageFilter() {
@Override
public boolean filter(Notification notification) {
if (notification.getContent().contains("XPush")) {
showMessage("通知被攔截");
return true;
}
return false;
}
@Override
public boolean filter(CustomMessage message) {
if (message.getMsg().contains("XPush")) {
showMessage("自定義消息被攔截");
return true;
}
return false;
}
};
@Override
public void onDestroyView() {
XPushManager.get().removeFilter(mMessageFilter);
super.onDestroyView();
}
6攀甚、推送通知的點(diǎn)擊處理
對于通知的點(diǎn)擊事件,我們可以處理得更優(yōu)雅岗喉,自定義其點(diǎn)擊后的動作秋度,打開我們想讓用戶看到的頁面。
我們可以在全局消息推送的接收器IPushReceiver
中的onNotificationClick
回調(diào)中钱床,增加打開指定頁面的操作荚斯。
@Override
public void onNotificationClick(Context context, XPushMsg msg) {
super.onNotificationClick(context, msg);
//打開自定義的Activity
Intent intent = IntentUtils.getIntent(context, TestActivity.class, null, true);
intent.putExtra(KEY_PARAM_STRING, msg.getContent());
intent.putExtra(KEY_PARAM_INT, msg.getId());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
ActivityUtils.startActivity(intent);
}
需要注意的是,這需要你在消息推送平臺推送的通知使用的是自定義動作
或者打開指定頁面
類型查牌,并且傳入的Intent uri 內(nèi)容滿足如下格式:
title:通知的標(biāo)題
content:通知的內(nèi)容
extraMsg:通知附帶的拓展字段事期,可存放json或其他內(nèi)容
keyValue:通知附帶的鍵值對
xpush://com.xuexiang.xpush/notification?title=這是一個通知&content=這是通知的內(nèi)容&extraMsg=xxxxxxxxx&keyValue={"param1": "1111", "param2": "2222"}
當(dāng)然你也可以自定義傳入的Intent uri 格式,具體可參考項目中的XPushNotificationClickActivity和AndroidManifest.xml
推送平臺說明
目前已支持的推送平臺
推送平臺 | 平臺名 | 平臺碼 | 模塊名 | 客戶端類 |
---|---|---|---|---|
極光推送 | 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 |
推送平臺的注意事項
極光推送平臺所有特性都支持纸颜。
友盟推送
友盟推送在進(jìn)行XPush初始化的時候兽泣,除了在主進(jìn)程中注冊,還需要在channel中注冊胁孙。
友盟推送不支持Tag和alias的獲取
友盟推送不支持監(jiān)聽推送的連接狀態(tài)唠倦。
華為推送
華為推送在注冊之前需要安裝最新的推送服務(wù),否則將無法注冊成功(庫會自動彈出升級或者安裝提示)
華為推送不支持所有Tag和alias的操作涮较。
華為推送不支持接收通知到達(dá)事件牵敷。
小米推送
小米推送一次只能操作一個Tag。
小米推送注銷無結(jié)果反饋法希。
小米推送不支持監(jiān)聽推送的連接狀態(tài)。
如何拓展第三方推送
由于Android推送平臺的眾多靶瘸,目前本項目不可能也沒必要提供所有推送平臺的集成庫苫亦。如果你想使用的推送平臺在我這沒有找到對應(yīng)的集成庫的話,那么就需要你自己寫一個了怨咪。
其實拓展一個第三方推送庫也不是很難屋剑,只要遵循以下4步驟就可以完成了:
1.新建一個Android Library Module,然后將你準(zhǔn)備集成的推送平臺的依賴內(nèi)容導(dǎo)入進(jìn)來诗眨。這里包括引入推送依賴庫或SDK唉匾、配置
AndroidManifest.xml
。2.創(chuàng)建該推送平臺的客戶端XXXClient匠楚,實現(xiàn)IPushClient接口巍膘,并且重寫對應(yīng)的方法。其中
init
芋簿、register
峡懈、unRegister
、getPlatformCode
与斤、getPlatformName
這5個方法是必須重寫的肪康。
IPushClient接口方法詳細(xì)如下:
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();
/**
* 增加標(biāo)簽
*
* @param tag 標(biāo)簽
*/
void addTags(String... tag);
/**
* 刪除標(biāo)簽
*
* @param tag 標(biāo)簽
*/
void deleteTags(String... tag);
/**
* 獲取標(biāo)簽
*/
void getTags();
/**
* @return 獲取推送令牌
*/
String getPushToken();
/**
* 注意千萬不要重復(fù)【必須】
* @return 獲取平臺碼
*/
int getPlatformCode();
/**
* 注意千萬不要重復(fù)【必須】
* @return 獲取平臺名
*/
String getPlatformName();
}
- 3.創(chuàng)建和重寫三方消息推送的消息接收器(一般是重寫Receiver)荚恶。重寫三方推送的的接收透傳消息和通知的方法,調(diào)用
XPush
的transmitXXX方法磷支,將通知谒撼、透傳消息、通知點(diǎn)擊事件雾狈、以及其他事件廓潜,轉(zhuǎn)發(fā)到XPush。
主要調(diào)用以下五個方法:
(1)XPush.transmitMessage(): 轉(zhuǎn)發(fā)自定義(透傳)消息.
(2)XPush.transmitNotification(): 轉(zhuǎn)發(fā)通知到達(dá)消息.
(3)XPush.transmitNotificationClick(): 轉(zhuǎn)發(fā)通知點(diǎn)擊事件.
(4)XPush.transmitCommandResult(): 轉(zhuǎn)發(fā)IPushClient命令執(zhí)行結(jié)果.
(5)XPush.transmitConnectStatusChanged(): 轉(zhuǎn)發(fā)推送連接狀態(tài)發(fā)生改變的事件.
- 4.增加該推送平臺對應(yīng)的代碼混淆配置信息箍邮。
以上即完成了推送平臺的集成茉帅。剩下的就是在初始化XPush的時候?qū)ν扑推脚_進(jìn)行選擇了.如果你看完了還是不會的話,你可以參考項目中的xpush-xiaomi和xpush-huawei.
實體介紹
XPushMsg
推送消息轉(zhuǎn)譯實體锭弊,攜帶消息的原始數(shù)據(jù)
字段名 | 類型 | 備注 |
---|---|---|
mId | int | 消息ID / 狀態(tài) |
mTitle | String | 通知標(biāo)題 |
mContent | String | 通知內(nèi)容 |
mMsg | String | 自定義(透傳)消息 |
mExtraMsg | String | 消息拓展字段 |
mKeyValue | String | 消息鍵值對 |
Notification
推送通知堪澎,由XPushMsg轉(zhuǎn)化而來
字段名 | 類型 | 備注 |
---|---|---|
mId | int | 消息ID / 狀態(tài) |
mTitle | String | 通知標(biāo)題 |
mContent | String | 通知內(nèi)容 |
mExtraMsg | String | 消息拓展字段 |
mKeyValue | String | 消息鍵值對 |
CustomMessage
自定義(透傳)消息,由XPushMsg轉(zhuǎn)化而來
字段名 | 類型 | 備注 |
---|---|---|
mMsg | String | 自定義(透傳)消息 |
mExtraMsg | String | 消息拓展字段 |
mKeyValue | String | 消息鍵值對 |
XPushCommand
IPushClient執(zhí)行相關(guān)命令的結(jié)果信息實體
字段名 | 類型 | 備注 |
---|---|---|
mType | int | 命令類型 |
mResultCode | int | 結(jié)果碼 |
mContent | String | 命令內(nèi)容 |
mExtraMsg | String | 拓展字段 |
mError | String | 錯誤信息 |
常量介紹
CommandType
命令的類型
命令名 | 命令碼 | 備注 |
---|---|---|
TYPE_REGISTER | 2000 | 注冊推送 |
TYPE_UNREGISTER | 2001 | 注銷推送 |
TYPE_ADD_TAG | 2002 | 添加標(biāo)簽 |
TYPE_DEL_TAG | 2003 | 刪除標(biāo)簽 |
TYPE_GET_TAG | 2004 | 獲取標(biāo)簽 |
TYPE_BIND_ALIAS | 2005 | 綁定別名 |
TYPE_UNBIND_ALIAS | 2006 | 解綁別名 |
TYPE_GET_ALIAS | 2007 | 獲取別名 |
TYPE_AND_OR_DEL_TAG | 2008 | 添加或刪除標(biāo)簽 |
ResultCode
命令的結(jié)果碼
結(jié)果名 | 結(jié)果碼 | 備注 |
---|---|---|
RESULT_OK | 0 | 成功 |
RESULT_ERROR | 1 | 失敗 |
ConnectStatus
推送連接狀態(tài)
狀態(tài)名 | 狀態(tài)碼 | 備注 |
---|---|---|
DISCONNECT | 10 | 已斷開 |
CONNECTING | 11 | 連接中 |
CONNECTED | 12 | 已連接 |
混淆配置
# XPush的混淆
-keep class * extends com.xuexiang.xpush.core.IPushClient{*;}
-keep class * extends com.xuexiang.xpush.core.receiver.IPushReceiver{*;}
# 極光推送混淆
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
-keep class * extends cn.jpush.android.service.JPushMessageReceiver{*;}
# umeng推送
-dontwarn com.umeng.**
-dontwarn com.taobao.**
-dontwarn anet.channel.**
-dontwarn anetwork.channel.**
-dontwarn org.android.**
-dontwarn org.apache.thrift.**
-dontwarn com.xiaomi.**
-dontwarn com.huawei.**
-dontwarn com.meizu.**
-keep class com.taobao.** {*;}
-keep class org.android.** {*;}
-keep class anet.channel.** {*;}
-keep class com.xiaomi.** {*;}
-keep class com.huawei.** {*;}
-keep class com.meizu.** {*;}
-keep class org.apache.thrift.** {*;}
-keep class com.alibaba.sdk.android.**{*;}
-keep class com.ut.**{*;}
-keep class com.ta.**{*;}
# 華為推送
-keep class com.huawei.hms.**{*;}
-keep class com.huawei.android.hms.agent.**{*;}
# 小米推送
-keep class * extends com.xiaomi.mipush.sdk.PushMessageReceiver{*;}