Android使用個(gè)推實(shí)現(xiàn)三方應(yīng)用的推送功能
PS:用了一下個(gè)推.感覺(jué)實(shí)現(xiàn)第三方應(yīng)用的推送功能還是比較簡(jiǎn)單的.官方文檔寫(xiě)的也非常的明確.

學(xué)習(xí)內(nèi)容:
1.使用個(gè)推實(shí)現(xiàn)第三方應(yīng)用的推送.
所有的配置我最后會(huì)給一個(gè)源代碼,內(nèi)部有相關(guān)的配置和文檔來(lái)幫助大家完成配置,在這里就不進(jìn)行介紹了.
感覺(jué)需要寫(xiě)的東西不是非常的多,因?yàn)楣俜降奈臋n已經(jīng)寫(xiě)的非常的明確了,如何進(jìn)行配置,導(dǎo)入jar包,.so文件,以及AndroidManifest的文件的相關(guān)配置都寫(xiě)的非常的明確.我這里就稍微的簡(jiǎn)單介紹一下.注冊(cè)賬號(hào)什么的我就不說(shuō)了,這些基本的東西沒(méi)有減少的必要性.
i.PushManager
PushManager是實(shí)現(xiàn)推送的核心類(lèi),可以進(jìn)行推送控制,設(shè)置標(biāo)簽,設(shè)置別名,設(shè)置默認(rèn)時(shí)間等.所有的接口都由這個(gè)對(duì)象去調(diào)用.因此我們需要初始化PushManager對(duì)象.
對(duì)象的創(chuàng)建方式是單列的.因此拿到的對(duì)象也就具有唯一性.這里獲取到PushManager對(duì)象的同時(shí)去初始化個(gè)推服務(wù),接口調(diào)用之后個(gè)推服務(wù)后臺(tái)運(yùn)行,通過(guò)廣播的方式將CID發(fā)送給App.這里其實(shí)最重要的就是這個(gè)廣播,其他的東西都沒(méi)有什么重點(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){
/**
* 初始化對(duì)象
* 可以進(jìn)行推送控制,設(shè)置標(biāo)簽,設(shè)置別名,設(shè)置默認(rèn)時(shí)間等
* 所有接口都由該對(duì)象調(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;
}
/**
* 對(duì)外暴露接口
* */
public interface OnGetPushMessageListener{
void getOstfMessage(String message);
}
}
這個(gè)廣播是接收推送消息的核心類(lèi),其實(shí)實(shí)現(xiàn)起來(lái)也是比較簡(jiǎn)單的,首先就是獲取PushManager對(duì)象,然后初始化個(gè)推服務(wù),在OnReceiver方法中對(duì)傳遞過(guò)來(lái)的數(shù)據(jù)進(jìn)行判斷,這里只對(duì)兩種狀態(tài)進(jìn)行了判斷,一種是推送通知,另一種則是透?jìng)飨?
@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;
/**
* 透?jìng)飨?傳遞過(guò)來(lái)的是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;
}
}
這樣通過(guò)判斷,我們就可以得知,是推送通知,還是透?jìng)飨⒌鹊?最后寫(xiě)了一個(gè)對(duì)外界暴露的接口,其實(shí)就對(duì)Activity暴露接口,當(dāng)我們?cè)趶V播中接收到了數(shù)據(jù)發(fā)生了變化,或者是有數(shù)據(jù)傳遞過(guò)來(lái),需要通過(guò)這個(gè)接口的方式,告知數(shù)據(jù)產(chǎn)生了變化,需要主進(jìn)程做相關(guān)的處理,這是暴露接口的目的.然后在主頁(yè)面中,我們只需要實(shí)現(xiàn)這個(gè)接口就可以了.
GeTuiPushReceiver.setOnGetPushMessageListener(new GeTuiPushReceiver.OnGetPushMessageListener() {
@Override
public void getOstfMessage(String message) {
if(message!=null){
MessageData.add(message);
}
}
});
iii.打開(kāi)推送
turnOnPush(context)方法,用于打開(kāi)推送,如果我們不主動(dòng)打開(kāi)推送的話,就算是后臺(tái)發(fā)送了推送消息,我們也是接收不到的.在默認(rèn)的狀態(tài)下是開(kāi)啟狀態(tài).
iv.關(guān)閉推送服務(wù)
turnOffPush(context)方法,用于關(guān)閉推送服務(wù).這個(gè)方法執(zhí)行之后,就無(wú)法收到推送服務(wù)了,需要注意的是,想要再次接收到推送,必須使用turnOnPush(context)方法.其他方法無(wú)效.
v.停止SDK服務(wù).
stopService(context).停止SDK服務(wù)之后,服務(wù)不會(huì)終止運(yùn)行,而是終止推送和聯(lián)網(wǎng)功能.重新啟動(dòng)需要調(diào)用initalize()方法或者是turnOnPush()方法.
基本的東西都介紹完了,還有一些設(shè)置標(biāo)簽,靜默時(shí)間,綁定別名什么的,大家如果有興趣可以自己去研究下,反正我是暫時(shí)沒(méi)有使用到.因此就先不動(dòng)這幾個(gè)模塊了.我們就來(lái)看看如何使用個(gè)推后臺(tái)來(lái)實(shí)現(xiàn)推送吧.

首先我們需要?jiǎng)?chuàng)建自己的應(yīng)用,然后我們可以在應(yīng)用配置當(dāng)中獲取到我們想要的數(shù)據(jù),具體效果如下.

這里有我們想要的數(shù)據(jù),AppId,AppKey等等,這些東西都需要在AndroidManifest文件中進(jìn)行配置.自己做好Demo之后,就可以通過(guò)后臺(tái)發(fā)送推送了.

標(biāo)題和內(nèi)容都是必填項(xiàng),然后一直確定就可以了,這樣消息就被推送出去了.在App上打開(kāi)推送服務(wù),就可以接收到推送了.透?jìng)飨⑽揖筒贿M(jìn)行截圖了.需要注意的一點(diǎn)就是透?jìng)飨⑹荍son格式的字串.個(gè)推為我們提供好了Json的格式化工具.
最后放上一個(gè)源代碼,這個(gè)源代碼是無(wú)法運(yùn)行的,因?yàn)檫@里是使用我自己的后臺(tái),大家也需要去創(chuàng)建賬號(hào),用自己的后臺(tái)去創(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頂欄定時(shí)推送消息
- Android中使用WebSocket實(shí)現(xiàn)群聊和消息推送功能(不使用WebView)
- android push推送相關(guān)基本問(wè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ī)關(guān)閉依然拍照)詳解及實(shí)例代碼
這篇文章主要介紹了?Android?拍照功能實(shí)現(xiàn)(手機(jī)關(guān)閉依然拍照)詳解及實(shí)例代碼的相關(guān)資料,這對(duì)Android相機(jī)在不開(kāi)手機(jī)的情況下還能繼續(xù)拍照,附有實(shí)例Demo,需要的朋友可以參考下2016-12-12
Android UI組件AppWidget控件入門(mén)詳解
這篇文章主要介紹了Android UI組件AppWidget控件入門(mén),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android實(shí)現(xiàn)美團(tuán)下拉功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)美團(tuán)下拉功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
Android SDK Manager更新、下載速度慢問(wèn)題解決辦法
這篇文章主要介紹了Android SDK Manager更新、下載速度慢問(wèn)題解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05
Cocos2d-x入門(mén)教程(詳細(xì)的實(shí)例和講解)
這篇文章主要介紹了Cocos2d-x入門(mén)教程,包括詳細(xì)的實(shí)例、講解以及實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下2014-04-04
Android網(wǎng)絡(luò)判斷知識(shí)小結(jié)
本文通過(guò)兩段實(shí)例代碼分別給大家介紹Android中判斷當(dāng)前網(wǎng)絡(luò)是否可用和Android 關(guān)于判斷應(yīng)用是否有網(wǎng)絡(luò)的相關(guān)知識(shí),對(duì)android網(wǎng)絡(luò)判斷相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12
Flutter實(shí)現(xiàn)底部和頂部導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)底部和頂部導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07

