基于个推实现推送
在开发APP的时候,我们经常会碰到需要进行推送消息的情况,个推就是一个很好地解决了这个问题的平台,接下来就我在项目中使用的情况 简单做以记录。
在个推官网申请appkey等内容
在个推开发者中心中,点击应用管理中的添加应用,填写相应的应用信息,唯独获取android签名比较麻烦,但是可根据平台的引导获取得到。
然后一步步操作可获取appId、appKey、masterSecret这三项配置。我在此是
写成了静态的变量,方便之后进行操作。
// 在这里你需要吧自己申请的东西填进去哦
public class conf {
//定义常量, appId、appKey、masterSecret 在"个推控制台"中获得的应用配置
// 由IGetui管理页面生成,是您的应用与SDK通信的标识之一,每个应用都对应一个唯一的AppID
public static String appId = "";
// 预先分配的第三方应用对应的Key,是您的应用与SDK通信的标识之一。
public static String appKey = "";
// 个推服务端API鉴权码,用于验证调用方合法性。在调用个推服务端API时需要提供。(请妥善保管,避免通道被盗用)
public static String masterSecret = "";
public static String url = "http://sdk.open.api.igexin.com/apiex.htm";
}
app推送的工具类
该工具类是为了方便推送,所以写的工具类
public class AppPush {
// 对单个用户推送消息
/*
* 1. cId:客户端唯一识别码
* 2. transText:透传消息
* 3. title:标题栏 ,
* 4. text:通知栏内容,
*/
public static void sendAppMsg(String cId,Map<String,String> param) {
try {
// 代表在个推注册的一个 app,调用该类实例的方法来执行对个推的请求
IGtPush push = new IGtPush(conf.url,conf.appKey, conf.masterSecret);
//定义消息推送方式为,单推
SingleMessage message = new SingleMessage();
// 设置推送消息的模板
JSONObject transText = new JSONObject();
for (Map.Entry<String,String> entry : param.entrySet()) {
transText.element(entry.getKey(), entry.getValue());
}
message.setData(Templates.getTransmissionTemplate(transText.toString()));
message.setOffline(true);
message.setOfflineExpireTime(24*1000*3600);
// 设置推送目标
Target target = new Target();
target.setAppId(conf.appId);
// 设置cid
target.setClientId(cId);
// 获得推送结果
System.out.println("正在推送app消息...");
IPushResult result = push.pushMessageToSingle(message, target);
System.out.println("========================");
System.out.println(result.getResponse().toString());
/*
* 1. 失败:{result=sign_error}
* 2. 成功:{result=ok, taskId=OSS-0212_1b7578259b74972b2bba556bb12a9f9a, status=successed_online}
* 3. 异常
*/
}catch (Exception e){
e.printStackTrace();
}
}
// 对单个用户推送消息
/*
* 1. cId:客户端唯一识别码
* 2. transText:透传消息
* 3. title:标题栏 ,
* 4. text:通知栏内容,
*/
public static void sendAppOpenMsg(String cId,Map<String,String> param) {
try {
// 代表在个推注册的一个 app,调用该类实例的方法来执行对个推的请求
IGtPush push = new IGtPush(conf.url