Android使用个推实现三方应用的推送功能
作者:Darker 发布时间:2022-04-16 08:52:46
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进行修改.并且内部提供了很多文档,帮助大家去集成,点击下载。


猜你喜欢
- 目录1.C语音的字符串有两种1.1字符数组1.2字符指针2.字符串常用的方法2.1strcpy字符串拼接2.2strchr字符串中查找字符2
- 项目需求最近项目中有一个需求就是让Java代码去代替人工操作,自动生成PPT,具体就是查询数据库数据,然后根据模板文件(PPT),将数据库数
- 上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序。上次说的收集方法主要是把收集的信息通过Http的post请求把相关
- 本文实例为大家分享了C#访问共享文件夹或者磁盘的具体代码,供大家参考,具体内容如下SharedTool:using System; &nbs
- 一、insert1.插入操作public class CRUDTests { @Autowired
- 详解Android使用@hide的API的方法今天早上想修改MediaPlaybackService.Java(/packages/apps
- Nashorn是什么Nashorn,发音“nass-horn”,是德国二战时一个坦克的命名,同时也是java8新一代的javascript引
- 先来看看效果图跳动的小球做这个动画,需掌握: 1、属性动画  
- File类概述File类是java.io包下代表与平台无关的文件和目录。File可以新建、删除、重命名文件和目录,但是不能访问文件内容本身,
- 近期遇到了DateTime到底是值类型还是引用类型的疑惑,顺势较深入地了解一下DateTime相关的内容结论:DateTime是值类型,因为
- 本文实例为大家分享了Android实现闪屏页效果的具体代码,供大家参考,具体内容如下1.效果图2.闪屏页逻辑及布局2.1 activity_
- 最近做一个需求,需求中的bean只用于生成一次json使用,所以想通过配置来动态的生成,查了一下,java还真有这个实现。java动态的生成
- 具体配置方法如下: 1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"
- 一、基本定义Arrays类,全路径java.util.Arrays,主要功能为操作数组,Arrays类的所有方法均为静态方法,所以调用方式全
- 现在视频应用越来越火,Periscope火起来后,国内也出现了不少跟风者,界面几乎跟Periscope一模一样.Periscope确实不错,
- 本文实例为大家分享了Handler实现倒计时功能的具体代码,供大家参考,具体内容如下1、需求1.1 实现目标当后台传递一个时间戳时,与当前系
- 记得面试时候,有面试官会问道,你们多数据源是怎么实现的呀。.......,一阵蒙蔽中,然后说道我们之前项目中,没有用到多数据源。所幸,目前做
- C++的函数指针(function pointer)是通过指向函数的指针间接调用函数。相信很多人对指向一般函数的函数指针使用的比较多,而对指
- 自定义view的第三篇,模仿的是微博运动界面的个人出生日期设置view,先看看我的效果图: 支持设置初始年份,左右滑动选择出生年份,对应的T
- 基于opencv的车道线检测,供大家参考,具体内容如下原理:算法基本思想说明:传统的车道线检测,多数是基于霍夫直线检测,其实这个里面有个很大