Android使用個推實(shí)現(xiàn)三方應(yīng)用的推送功能
PS:用了一下個推.感覺實(shí)現(xiàn)第三方應(yīng)用的推送功能還是比較簡單的.官方文檔寫的也非常的明確.
學(xué)習(xí)內(nèi)容:
1.使用個推實(shí)現(xiàn)第三方應(yīng)用的推送.
所有的配置我最后會給一個源代碼,內(nèi)部有相關(guān)的配置和文檔來幫助大家完成配置,在這里就不進(jìn)行介紹了.
感覺需要寫的東西不是非常的多,因?yàn)楣俜降奈臋n已經(jīng)寫的非常的明確了,如何進(jìn)行配置,導(dǎo)入jar包,.so文件,以及AndroidManifest的文件的相關(guān)配置都寫的非常的明確.我這里就稍微的簡單介紹一下.注冊賬號什么的我就不說了,這些基本的東西沒有減少的必要性.
i.PushManager
PushManager是實(shí)現(xiàn)推送的核心類,可以進(jìn)行推送控制,設(shè)置標(biāo)簽,設(shè)置別名,設(shè)置默認(rèn)時間等.所有的接口都由這個對象去調(diào)用.因此我們需要初始化PushManager對象.
對象的創(chuàng)建方式是單列的.因此拿到的對象也就具有唯一性.這里獲取到PushManager對象的同時去初始化個推服務(wù),接口調(diào)用之后個推服務(wù)后臺運(yùn)行,通過廣播的方式將CID發(fā)送給App.這里其實(shí)最重要的就是這個廣播,其他的東西都沒有什么重點(diǎn)的地方.只需要稍微的注意一下即可.
ii.GeTuiPushReceiver app接收CID的廣播
package com.example.totem.getuidemo.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import com.igexin.sdk.PushConsts; import com.igexin.sdk.PushManager; /** * Created by Totem on 2016/8/15. * @author 代碼丶如風(fēng) */ public class GeTuiPushReceiver extends BroadcastReceiver { public static String KEY_CLIENT_ID = "push_notification_client_id"; public static String message; public static void init(Context context){ /** * 初始化對象 * 可以進(jìn)行推送控制,設(shè)置標(biāo)簽,設(shè)置別名,設(shè)置默認(rèn)時間等 * 所有接口都由該對象調(diào)用 * */ PushManager.getInstance().initialize(context); /** * 獲取ClientId * */ String clientId = PushManager.getInstance().getClientid(context); if(clientId != null){ KEY_CLIENT_ID = clientId; } } @Override public void onReceive(Context context, Intent intent) { //相關(guān)處理 } private static OnGetPushMessageListener onGetPushMessageListener; public static void setOnGetPushMessageListener(OnGetPushMessageListener onGetPushMessageListener) { GeTuiPushReceiver.onGetPushMessageListener = onGetPushMessageListener; } /** * 對外暴露接口 * */ public interface OnGetPushMessageListener{ void getOstfMessage(String message); } }
這個廣播是接收推送消息的核心類,其實(shí)實(shí)現(xiàn)起來也是比較簡單的,首先就是獲取PushManager對象,然后初始化個推服務(wù),在OnReceiver方法中對傳遞過來的數(shù)據(jù)進(jìn)行判斷,這里只對兩種狀態(tài)進(jìn)行了判斷,一種是推送通知,另一種則是透傳消息.
@Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); switch (bundle.getInt(PushConsts.CMD_ACTION)){ /** * 推送通知 * */ case PushConsts.GET_CLIENTID: String cid = bundle.getString("clientid"); break; /** * 透傳消息,傳遞過來的是Json字符串.一般而言需要客戶端進(jìn)行解析. * */ case PushConsts.GET_MSG_DATA: String appid = bundle.getString("appid"); byte[] payload = bundle.getByteArray("payload"); String taskid = bundle.getString("taskid"); String messageid = bundle.getString("messageid"); if(payload != null){ /** * 如果拿到的數(shù)據(jù)不為空.那么做相關(guān)的處理 * */ message = new String(payload); onGetPushMessageListener.getOstfMessage(message); }else{ message = ""; } break; } }
這樣通過判斷,我們就可以得知,是推送通知,還是透傳消息等等.最后寫了一個對外界暴露的接口,其實(shí)就對Activity暴露接口,當(dāng)我們在廣播中接收到了數(shù)據(jù)發(fā)生了變化,或者是有數(shù)據(jù)傳遞過來,需要通過這個接口的方式,告知數(shù)據(jù)產(chǎn)生了變化,需要主進(jìn)程做相關(guān)的處理,這是暴露接口的目的.然后在主頁面中,我們只需要實(shí)現(xiàn)這個接口就可以了.
GeTuiPushReceiver.setOnGetPushMessageListener(new GeTuiPushReceiver.OnGetPushMessageListener() { @Override public void getOstfMessage(String message) { if(message!=null){ MessageData.add(message); } } });
iii.打開推送
turnOnPush(context)方法,用于打開推送,如果我們不主動打開推送的話,就算是后臺發(fā)送了推送消息,我們也是接收不到的.在默認(rèn)的狀態(tài)下是開啟狀態(tài).
iv.關(guān)閉推送服務(wù)
turnOffPush(context)方法,用于關(guān)閉推送服務(wù).這個方法執(zhí)行之后,就無法收到推送服務(wù)了,需要注意的是,想要再次接收到推送,必須使用turnOnPush(context)方法.其他方法無效.
v.停止SDK服務(wù).
stopService(context).停止SDK服務(wù)之后,服務(wù)不會終止運(yùn)行,而是終止推送和聯(lián)網(wǎng)功能.重新啟動需要調(diào)用initalize()方法或者是turnOnPush()方法.
基本的東西都介紹完了,還有一些設(shè)置標(biāo)簽,靜默時間,綁定別名什么的,大家如果有興趣可以自己去研究下,反正我是暫時沒有使用到.因此就先不動這幾個模塊了.我們就來看看如何使用個推后臺來實(shí)現(xiàn)推送吧.
首先我們需要創(chuàng)建自己的應(yīng)用,然后我們可以在應(yīng)用配置當(dāng)中獲取到我們想要的數(shù)據(jù),具體效果如下.
這里有我們想要的數(shù)據(jù),AppId,AppKey等等,這些東西都需要在AndroidManifest文件中進(jìn)行配置.自己做好Demo之后,就可以通過后臺發(fā)送推送了.
標(biāo)題和內(nèi)容都是必填項(xiàng),然后一直確定就可以了,這樣消息就被推送出去了.在App上打開推送服務(wù),就可以接收到推送了.透傳消息我就不進(jìn)行截圖了.需要注意的一點(diǎn)就是透傳消息是Json格式的字串.個推為我們提供好了Json的格式化工具.
最后放上一個源代碼,這個源代碼是無法運(yùn)行的,因?yàn)檫@里是使用我自己的后臺,大家也需要去創(chuàng)建賬號,用自己的后臺去創(chuàng)建應(yīng)用,然后把AndroidManifest文件中的AppId,AppKey,AppSecret進(jìn)行修改.并且內(nèi)部提供了很多文檔,幫助大家去集成,點(diǎn)擊下載。
- Android手機(jī)端小米推送Demo解析和實(shí)現(xiàn)方法
- Android中使用socket通信實(shí)現(xiàn)消息推送的方法詳解
- Android頂欄定時推送消息
- Android中使用WebSocket實(shí)現(xiàn)群聊和消息推送功能(不使用WebView)
- android push推送相關(guān)基本問答總結(jié)
- Android、iOS和Windows Phone中的推送技術(shù)詳解
- Erlang實(shí)現(xiàn)的百度云推送Android服務(wù)端實(shí)例
- 使用SignalR推送服務(wù)在Android的實(shí)現(xiàn) SignalA
- Android中利用App實(shí)現(xiàn)消息推送機(jī)制的代碼
- Android 推送原理(Android Push Notification)詳解
相關(guān)文章
Android實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼
在登錄注冊軟件時,經(jīng)常會要求填寫隨機(jī)驗(yàn)證碼,這篇文章為大家詳細(xì)主要介紹了Android實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08android Matrix實(shí)現(xiàn)圖片隨意放大縮小或拖動
這篇文章主要為大家詳細(xì)介紹了android Matrix實(shí)現(xiàn)圖片隨意放大縮小或拖動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02Android自定義view實(shí)現(xiàn)輸入框效果
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)輸入框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-03-03Android編程實(shí)現(xiàn)獲取當(dāng)前系統(tǒng)語言及地區(qū)并更改語言的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)獲取當(dāng)前系統(tǒng)語言及地區(qū)并更改語言的方法,涉及Android針對系統(tǒng)語言及地區(qū)的獲取與設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2017-10-10Android實(shí)現(xiàn)京東App分類頁面效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)京東App分類頁面效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Android應(yīng)用閃屏頁延遲跳轉(zhuǎn)的三種寫法
這篇文章主要介紹了 Android應(yīng)用閃屏頁延遲跳轉(zhuǎn)的三種寫法,需要的朋友可以參考下2017-03-03Android實(shí)現(xiàn)判斷手機(jī)未接來電及處理方法
這篇文章主要介紹了Android實(shí)現(xiàn)判斷手機(jī)未接來電及處理方法,需要的朋友可以參考下2014-07-07Android Manifest中meta-data擴(kuò)展元素數(shù)據(jù)的配置與獲取方式
這篇文章主要介紹了Android Manifest中meta-data擴(kuò)展元素數(shù)據(jù)的配置與獲取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android開發(fā)之基于DialogFragment創(chuàng)建對話框的方法示例
這篇文章主要介紹了Android開發(fā)之基于DialogFragment創(chuàng)建對話框的方法,結(jié)合實(shí)例形式分析了DialogFragment創(chuàng)建對話框的具體功能與布局相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08