? ? ? ? 項(xiàng)目中使用到推送的情景是一個非常普遍的功能點(diǎn)惨奕,也是常規(guī)項(xiàng)目中一個不可缺少的流程雪位。提供第三方推送服務(wù)的渠道很多,最常用的有極光和友盟梨撞,這個看開發(fā)人員和產(chǎn)品的實(shí)際情況進(jìn)行分析雹洗。因?yàn)樵软?xiàng)目中使用的極光推送,配置的版本比較低卧波。新增的業(yè)務(wù)功能是需要在極光中添加廠商渠道和增加角標(biāo)提醒功能时肿,添加廠商渠道可以更高效的接受推送消息,特別是在app放置在后臺的情況下港粱。 角標(biāo)功能也是常見的功能之一螃成,今天就分享一下極光對接的一些知識點(diǎn)。
jcenter依賴
????????原先代碼中使用極光采用的是manifest文件配置和添加jar包的方式進(jìn)行處理,這樣的處理顯得很繁瑣寸宏,要注意的細(xì)節(jié)也很多宁炫。隨著極光官方文件的指示,新版本精簡了這一部分操作击吱。
1.小米
? ? ? ? 首先需要在build.gradle文件中配置jcenter依賴
? ??????????????????
? ??在應(yīng)用 module 的 gradle 中 dependencies 節(jié)點(diǎn)添加如下代碼
注意: jpush和core的版本跟廠商的版本是相對應(yīng)的
? ? ? 因?yàn)槭菑S商渠道淋淀,根據(jù)極光文檔的介紹,消息是先由極光平臺先推送的廠商平臺覆醇,然后再由產(chǎn)商平臺推送到客戶端的朵纷,所以這個地方需要極光平臺和廠商平臺之間建立關(guān)聯(lián),這就需要開發(fā)者先在廠商平臺上傳app注冊相關(guān)信息永脓,注冊之后會生成appid和appkey? 這兩個信息需要配置到gradle文件中? ?
manifest文件中需要配置一個自定義的service進(jìn)行intent數(shù)據(jù)傳遞的鏈接袍辞,自定義的service需要繼承自JCommonService,如果沒有實(shí)現(xiàn)這一步常摧,極光在進(jìn)行初始化的過程中core包就會提示報錯搅吁,表示初始化失敗。
同時還需要再manifest文件中配置receiver來進(jìn)行消息接受和處理
? ??????????
注意:新版本的極光的消息類不再集成BroadcastReceiver落午,而是繼承JPushMessageReceiver? 其中不同之前通過intent的action來區(qū)分消息接受和消息點(diǎn)擊開發(fā)等一些操作谎懦,而是通過不同的重載方法來實(shí)現(xiàn)
NotificationMessage包含了消息通知的一些相關(guān)字段? ?例如 title content,具體可以參考極光官方文檔的說明溃斋。
CustomMessage類則是自定義消息包含的的相關(guān)字段界拦,具體使用可根據(jù)業(yè)務(wù)需求進(jìn)行處理。
最后需要在代碼中配置混淆梗劫,這樣等于小米渠道相關(guān)的對接就完成了享甸。
2.華為
? ? ? ? ?華為的配置跟小米的配置有些許不同,除了同樣需要在gradle文件中的dependencies下配置依賴包之外梳侨,還需要一些其他的操作蛉威,首先在華為開發(fā)者平臺中也需要上傳app進(jìn)行注冊,之前的版本會獲取一個HUAWEI_APPID走哺,最新的版本則是會生成一個 agconnect-services.json的配置文件蚯嫌,將這個文件導(dǎo)入應(yīng)用的 module 目錄下。
????build.gradle 中添加規(guī)則丙躏,以納入 HMS 服務(wù)插件 和 華為 的 Maven 代碼庫齐帚,classpath'com.huawei.agconnect:agcp:x.x.x.xxx'的版本號是有區(qū)分的,代碼中沒有配置多渠道打包的前提下彼哼,只需要配置1.0及以上版本即可,如果配置了多渠道打包湘今,則必須要1.2.1.301及以上敢朱,同時不同渠道下對應(yīng)的agconnect-services.json 文件也需要分別放置在渠道的子目錄下,防止對應(yīng)錯誤。
應(yīng)用 module 的 build.gradle 文件添加 apply plugin 代碼行拴签,以啟用 gradle 插件
接著同樣需要在manifest文件中配置service來接受hms的消息孝常,注意hms服務(wù)必須要簽名成功才能注冊成功,無論是在代碼中進(jìn)行配置蚓哩,還是在打包過程中進(jìn)行配置簽名构灸,都需要跟當(dāng)時華為平臺注冊時候的簽名是一致,舉例 測試環(huán)境和正式環(huán)境的簽名是不一致的情況下岸梨,這種問題容易被忽視掉喜颁。
最后依然是代碼混淆