Android使用个推实现三方应用的推送功能

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进行修改.并且内部提供了很多文档,帮助大家去集成,点击下载。

(0)

相关推荐

  • Android中使用socket通信实现消息推送的方法详解

    原理 最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面. 下面简单画了一个图来说明这个原理: 演

  • Android中利用App实现消息推送机制的代码

    1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭. 我想到了一句话:don't call me,i will call you! qq今天在右下角弹出了一个对话框:"奥巴马宣布本拉登挂了...",正是如此. 自作聪明,就会带点小聪明,有人喜欢就有人讨厌. 2.独立进程 无论程序是否正在运行,我们都要能通知到客户,我们需要一个独立进程的后台服务. 我们需要一个独立进程的后台服务. 在androidmanifest.xml中注

  • Android中使用WebSocket实现群聊和消息推送功能(不使用WebView)

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).WebSocket是Web2.0时代的新产物,用于弥补HTTP协议的某些不足,不过他们之间真实的关系是兄弟关系,都是对socket的进一步封装,其目前最直观的表现就是服务器推送和聊天功能.更多知识参考:如何理解 TCP/IP, SPDY, WebSocket 三者之间的关系? 今天的重点是讲如何在Android中脱离WebView使用WebSocket,而不是在Web浏览器

  • Erlang实现的百度云推送Android服务端实例

    百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Android的云推送.Android支持的还不错,但是IOS一般很难调通.百度云对于IOS的推送来说,他只是做了一个中间的代理,为用户提供接口,优点是使用百度云推送,Android和IOS可以统一管理:缺点是:调通不容易,用户的IOS证书需要上传验证,会直接暴露给第三方,并且IOS的apns支持用户自己构建p

  • Android顶栏定时推送消息

    在用安卓设备时,经常会应用到弹出推送消息.下面在此把我之前写的推送代码分享给大家,供大家参考,有不同见解的朋友欢迎提出,共同学习进步! 最近搜索看这个的朋友比较多.这个也只是单独的内置推送.时时推送与服务器关联 我们可以用SDK云推送来实现我们所需的需求.相关介绍内容.往下移! 首先XML <!-- 安卓推送服务 --> <service android:name=".MessageService" android:enabled="true" a

  • android push推送相关基本问答总结

    通知和消息有什么区别? 通知:发送后会在系统通知栏收到展现,同时响铃或振动提醒用户. 消息:发送后不会在系统通知栏展现,SDK将消息传给第三方应用后需要开发者写展现代码才能看到. 什么是标签tag? 标签是用户的一种属性,在给某些用户设置某类标签后就可以针对推送.比如给喜欢"足球"打上"足球"标签,就可以只给他们精准推送.可以在应用管理页面管理每个应用的标签,每个应用最多打100个标签 Android平台SDK对手机和操作系统有哪些要求? SDK支持Android1

  • 使用SignalR推送服务在Android的实现 SignalA

    由于我的版本最低是2.2,所以只有把源码下下来自己改,如果你觉得太多了可自己编译成jar引用,本人不才,对java不是很熟悉,如果此版本中有错误还请大家指出来,此图显示的是安卓2.2与4.0的版本. chat_hub代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

  • Android 推送原理(Android Push Notification)详解

    Android 推送原理 由于最近项目中涉及到了Android推送,所以看了一些关于android推送方面的东西,总结到后面我们知道android推送的实现可以归结为3种: 1.POLL,拉.大致思路为向服务器定时的发送请求,然后自己让服务器返回信息. 优点:实现简单. 缺点:实时性差.如果定时间隔小连接数又多,对服务器会有高压力要求.据说还会费电--不知道是不是真的. 2.SMS,彩信方式.据说是拦截彩信,并解析内容.这个还没有动手实践过. 优点:实现简单.实时性也好. 缺点:SMS服务的成本

  • Android、iOS和Windows Phone中的推送技术详解

    推送并不是什么新技术,这种技术在互联网时代就已经很流行了.只是随着进入移动互联网时代,推送技术显得更加重要.因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示更多的信息(如图像.表格.声音等). 推送技术的实现通常会使用服务端向客户端推送消息的方式.也就是说客户端通过用户名.Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送. 实际上,在很多移动操作系统中,官方都为其提供了推送方案,例如,Google的云推送.IOS.Windows

  • Android手机端小米推送Demo解析和实现方法

    最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消息推送,关于Android推送的解决方案有很多种,有C2DM,轮询, SMS,MQTT协议,XMPP协议和第三方平台,经过我们对项目需求的考虑之后我们选择了第三方平台推送的小米推送,下面就是小米推送的实现方法. 实现准备 想要用小米推送首先要去小米开发者平台注册申请开发者账号,经过1到3天的审核之后

随机推荐