---
title: 个推推送
date: 2017-07-27 13:05:26
update: 2017-07-27 13:05:26
categories: 推送
tags: [推送]
---
### 1 个推向Android客户端推送消息
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.biusoft.core.common.config.Global;
import com.biusoft.interf.push.mail.pojo.RequestPushBean;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.base.uitls.AppConditions;
import com.gexin.rp.sdk.exceptions.RequestException;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.LinkTemplate;
import com.gexin.rp.sdk.template.TransmissionTemplate;
/**
* @ClassName PushSingleToApp
* @Author volc
* @Description 不同场景使用推送
* @Date 2017年6月19日 下午6:18:08
*/
public class PushSingleToApp {
private static ObjectMapper objectMapper = new ObjectMapper();
private static String appId = Global.getConfig("getui.app.id");
private static String appKey = Global.getConfig("getui.app.key");
private static String masterSecret = Global.getConfig("getui.master.secret");
private static String host = "http://sdk.open.api.igexin.com/apiex.htm";
/**
* @MethodName push
* @Author volc
* @Description 对指定用户收到新邮件推送
* @Date 2017年6月24日 下午3:55:10
*/
public static Map push(Map hashMap) throws Exception {
RequestPushBean pushBean = (RequestPushBean) hashMap.get("requestPush");
IGtPush push = new IGtPush(host, appKey, masterSecret);
TransmissionTemplate template = transmissionTemplate(hashMap);
SingleMessage message = new SingleMessage();
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 3600 * 1000);
message.setData(template);
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
Target target = new Target();
target.setAppId(appId);
target.setAlias(pushBean.getData().getUserId());
IPushResult ret = null;
try {
ret = push.pushMessageToSingle(message, target);
} catch (RequestException e) {
e.printStackTrace();
ret = push.pushMessageToSingle(message, target, e.getRequestId());
}
Map re = new HashMap();
if (ret != null) {
re = ret.getResponse();
re.put("success", "0");
return ret.getResponse();
} else {
re.put("success", "1");
re.put("info", "系统服务异常!");
return re;
}
}
/**
* @MethodName pushNotice
* @Author volc
* @Description 对应用群所有用户通知(公告),可以推送多个应用
* @Date 2017年6月24日 下午3:55:10
*/
public static Map pushNotice(Map hashMap) throws Exception {
IGtPush push = new IGtPush(host, appKey, masterSecret);
TransmissionTemplate template = transmissionTemplate(hashMap);
AppMessage message = new AppMessage();
message.setData(template);
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 1000 * 3600);
// 推送给App的目标用户需要满足的条件
AppConditions cdt = new AppConditions();
List appIdList = new ArrayList();
appIdList.add(appId);
message.setAppIdList(appIdList);
// 手机类型
List phoneTypeList = new ArrayList();
// 省份
List provinceList = new ArrayList();
// 自定义tag
List tagList = new ArrayList();
cdt.addCondition(AppConditions.PHONE_TYPE, phoneTypeList);
cdt.addCondition(AppConditions.REGION, provinceList);
cdt.addCondition(AppConditions.TAG, tagList);
message.setConditions(cdt);
IPushResult ret = push.pushMessageToApp(message);
try {
} catch (RequestException e) {
e.printStackTrace();
}
Map re = new HashMap();
if (ret != null) {
re = ret.getResponse();
re.put("success", "0");
return ret.getResponse();
} else {
re.put("success", "1");
re.put("info", "系统服务异常!");
return re;
}
}
/**
* @MethodName linkTemplateDemo
* @Author volc
* @Description 点击通知打开网页模板(LinkTemplate)
* @Date 2017年6月24日 下午4:34:24
*/
public static LinkTemplate linkTemplateDemo(Map param) {
RequestPushBean pushBean = (RequestPushBean) param.get("requestPush");
String title = pushBean.getData().getTitle();
String text = pushBean.getData().getContent();
LinkTemplate template = new LinkTemplate();
// 设置APPID与APPKEY
template.setAppId(appId);
template.setAppkey(appKey);
// 设置通知栏标题与内容
template.setTitle(title);
template.setText(text);
// 配置通知栏图标
// template.setLogo(Global.getConfig("getui.logo"));
// 配置通知栏网络图标,填写图标URL地址
// template.setLogoUrl(Global.getConfig("getui.logo.url"));
// 设置通知是否响铃,震动,或者可清除
template.setIsRing(true);
template.setIsVibrate(true);
template.setIsClearable(true);
// 设置打开的网址地址
// template.setUrl("http://www.baidu.com");
return template;
}
/**
* @throws Exception
* @MethodName transmissionTemplateDemo
* @Author volc
* @Description (穿透信息模板)文本内容模板,收到通知即可打开通知详情
* @Date 2017年6月24日 上午10:54:31
*/
public static TransmissionTemplate transmissionTemplate(Map param) throws Exception {
RequestPushBean pushBean = (RequestPushBean) param.get("requestPush");
TransmissionTemplate template = new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(2);
String writeValueAsString = objectMapper.writeValueAsString(pushBean);
// writeValueAsString =
// "{\"type\":0,\"data\":{\"title\":\"测试通知的标题4\",\"content\":\"测试通知的内容4\",\"timeStamp\":1498111326000}}";
template.setTransmissionContent(writeValueAsString);
// 设置定时展示时间
// template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
return template;
}
}
```
个推推送