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

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

學習內容:app

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

  

  全部的配置我最後會給一個源代碼,內部有相關的配置和文檔來幫助你們完成配置,在這裏就不進行介紹了.工具

  感受須要寫的東西不是很是的多,由於官方的文檔已經寫的很是的明確了,如何進行配置,導入jar包,.so文件,以及AndroidManifest的文件的相關配置都寫的很是的明確.我這裏就稍微的簡單介紹一下.註冊帳號什麼的我就不說了,這些基本的東西沒有減小的必要性.學習

i.PushManagerui

  PushManager是實現推送的核心類,能夠進行推送控制,設置標籤,設置別名,設置默認時間等.全部的接口都由這個對象去調用.所以咱們須要初始化PushManager對象.this

PushManager.getInstance().initialize(context);

  對象的建立方式是單列的.所以拿到的對象也就具備惟一性.這裏獲取到PushManager對象的同時去初始化個推服務,接口調用以後個推服務後臺運行,經過廣播的方式將CID發送給App.這裏其實最重要的就是這個廣播,其餘的東西都沒有什麼重點的地方.只須要稍微的注意一下便可.spa

ii.GeTuiPushReceiver app接收CID的廣播code

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

相關文章
相關標籤/搜索