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

作者:Darker 时间:2022-04-16 08:52:46 

PS:用了一下个推.感觉实现第三方应用的推送功能还是比较简单的.官方文档写的也非常的明确.

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

学习内容:

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);

基本的东西都介绍完了,还有一些设置标签,静默时间,绑定别名什么的,大家如果有兴趣可以自己去研究下,反正我是暂时没有使用到.因此就先不动这几个模块了.我们就来看看如何使用个推后台来实现推送吧.

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

首先我们需要创建自己的应用,然后我们可以在应用配置当中获取到我们想要的数据,具体效果如下.

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

这里有我们想要的数据,AppId,AppKey等等,这些东西都需要在AndroidManifest文件中进行配置.自己做好Demo之后,就可以通过后台发送推送了.

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

标题和内容都是必填项,然后一直确定就可以了,这样消息就被推送出去了.在App上打开推送服务,就可以接收到推送了.透传消息我就不进行截图了.需要注意的一点就是透传消息是Json格式的字串.个推为我们提供好了Json的格式化工具.

最后放上一个源代码,这个源代码是无法运行的,因为这里是使用我自己的后台,大家也需要去创建账号,用自己的后台去创建应用,然后把AndroidManifest文件中的AppId,AppKey,AppSecret进行修改.并且内部提供了很多文档,帮助大家去集成,点击下载。

标签:Android,个推,三方应用,推送
0
投稿

猜你喜欢

  • C#中Hashtable和Dictionary的区别与用法示例

    2023-10-05 03:22:59
  • Java编程复用类代码详解

    2021-09-13 10:06:34
  • 详解Java字节码编程之非常好用的javassist

    2021-08-27 04:54:30
  • java多线程编程之join方法的使用示例

    2022-10-06 05:09:38
  • Triple协议支持Java异常回传设计实现详解

    2021-08-16 17:16:09
  • Java+Selenium调用JavaScript的方法详解

    2021-05-26 17:08:24
  • java文件操作工具类分享(file文件工具类)

    2023-11-24 22:32:47
  • C#实现简单的聊天窗体

    2022-11-09 03:25:13
  • Android实现GridView中的item自由拖动效果

    2022-02-15 17:50:15
  • android倒计时控件示例

    2022-12-01 05:34:53
  • 在AOP中Spring生成代理类的两种方式

    2023-12-08 19:13:36
  • WPF应用启动慢的问题解决

    2021-09-07 23:14:01
  • C#程序中类数量对程序启动的影响详解

    2022-09-02 11:35:02
  • Windows同时安装两个版本JDK并实现动态切换JAVA8或JAVA11的方法

    2022-05-20 05:38:41
  • Java Integer如何获取第一位和最后一位,并截取

    2022-12-27 08:27:13
  • IDEA利用自带Axis工具和wsdl文件反向生成服务端客户端代码图文详解

    2021-12-06 20:02:12
  • SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取

    2023-06-21 19:16:23
  • 详解如何利用C#实现设置系统时间

    2023-09-04 13:55:05
  • Mybatis中注入执行sql查询、更新、新增及建表语句案例代码

    2023-03-07 18:53:55
  • Java实现PDF转为Word文档的示例代码

    2021-10-05 02:19:26
  • asp之家 软件编程 m.aspxhome.com