Android之使用個推實現三方應用的推送功能

來源:互聯網
上載者:User

標籤:

PS:用了一下個推.感覺實現第三方應用的推送功能還是比較簡單的.官方文檔寫的也非常的明確.

學習內容:

1.使用個推實現第三方應用的推送.

  

  所有的配置我最後會給一個原始碼,內部有相關的配置和文檔來協助大家完成配置,在這裡就不進行介紹了.

  感覺需要寫的東西不是非常的多,因為官方的文檔已經寫的非常的明確了,如何進行配置,匯入jar包,.so檔案,以及AndroidManifest的檔案的相關配置都寫的非常的明確.我這裡就稍微的簡單介紹一下.註冊帳號什麼的我就不說了,這些基本的東西沒有減少的必要性.

i.PushManager

  PushManager是實現推送的核心類,可以進行推送控制,設定標籤,設定別名,設定預設時間等.所有的介面都由這個對象去調用.因此我們需要初始化PushManager對象.

PushManager.getInstance().initialize(context);

  對象的建立方式是單列的.因此拿到的對象也就具有唯一性.這裡擷取到PushManager對象的同時去初始化個推服務,介面調用之後個推服務後台運行,通過廣播的方式將CID發送給App.這裡其實最重要的就是這個廣播,其他的東西都沒有什麼重點的地方.只需要稍微的注意一下即可.

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 代碼丶如風 */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){        /**         * 初始化對象         * 可以進行推送控制,設定標籤,設定別名,設定預設時間等         * 所有介面都由該對象調用         * */        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) {        //相關處理    }    private static OnGetPushMessageListener onGetPushMessageListener;    public static void setOnGetPushMessageListener(OnGetPushMessageListener onGetPushMessageListener) {        GeTuiPushReceiver.onGetPushMessageListener = onGetPushMessageListener;    }    /**     * 對外暴露介面     * */    public interface OnGetPushMessageListener{        void getOstfMessage(String message);    }}

  這個廣播是接收推送訊息的核心類,其實實現起來也是比較簡單的,首先就是擷取PushManager對象,然後初始化個推服務,在OnReceiver方法中對傳遞過來的資料進行判斷,這裡只對兩種狀態進行了判斷,一種是推播通知,另一種則是透傳訊息.

@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字串.一般而言需要用戶端進行解析.             * */            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){                    /**                     * 如果拿到的資料不為空白.那麼做相關的處理                     * */                    message = new String(payload);                    onGetPushMessageListener.getOstfMessage(message);                }else{                    message = "";                }                break;        }    }

  這樣通過判斷,我們就可以得知,是推播通知,還是透傳訊息等等.最後寫了一個對外界暴露的介面,其實就對Activity暴露介面,當我們在廣播中接收到了資料發生了變化,或者是有資料傳遞過來,需要通過這個介面的方式,告知資料產生了變化,需要主進程做相關的處理,這是暴露介面的目的.然後在首頁面中,我們只需要實現這個介面就可以了.

 GeTuiPushReceiver.setOnGetPushMessageListener(new GeTuiPushReceiver.OnGetPushMessageListener() {        @Override        public void getOstfMessage(String message) {            if(message!=null){                MessageData.add(message);            }        }    });

iii.開啟推送

  turnOnPush(context)方法,用於開啟推送,如果我們不主動開啟推送的話,就算是後台發送了推送訊息,我們也是接收不到的.在預設的狀態下是開啟狀態.

GeTuiPushReceiver.init(getApplicationContext());pushManager = PushManager.getInstance();pushManager.turnOnPush(this);

iv.關閉推送服務

  turnOffPush(context)方法,用於關閉推送服務.這個方法執行之後,就無法收到推送服務了,需要注意的是,想要再次接收到推送,必須使用turnOnPush(context)方法.其他方法無效.

GeTuiPushReceiver.init(getApplicationContext());pushManager = PushManager.getInstance();pushManager.turnOffPush(this);

v.停止SDK服務.

  stopService(context).停止SDK服務之後,服務不會終止運行,而是終止推送和連網功能.重新啟動需要調用initalize()方法或者是turnOnPush()方法.

GeTuiPushReceiver.init(getApplicationContext());pushManager = PushManager.getInstance();pushManager.stopService(this);

  基本的東西都介紹完了,還有一些設定標籤,靜默時間,綁定別名什麼的,大家如果有興趣可以自己去研究下,反正我是暫時沒有使用到.因此就先不動這幾個模組了.我們就來看看如何使用個推後台來實現推送吧.

  首先我們需要建立自己的應用,然後我們可以在應用配置當中擷取到我們想要的資料,具體效果如下.

  這裡有我們想要的資料,AppId,AppKey等等,這些東西都需要在AndroidManifest檔案中進行配置.自己做好Demo之後,就可以通過後台發送推送了.

  標題和內容都是必填項,然後一直確定就可以了,這樣訊息就被推送出去了.在App上開啟推送服務,就可以接收到推送了.透傳訊息我就不進行了.需要注意的一點就是透傳訊息是Json格式的字串.個推為我們提供好了Json的格式化工具.

  最後放上一個原始碼,這個原始碼是無法啟動並執行,因為這裡是使用我自己的後台,大家也需要去建立帳號,用自己的後台去建立應用,然後把AndroidManifest檔案中的AppId,AppKey,AppSecret進行修改.並且內部提供了很多文檔,協助大家去整合.

    http://pan.baidu.com/s/1pLldyqv

Android之使用個推實現三方應用的推送功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.