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

相关文章
相关标签/搜索