package com.cxy.bean;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.gexin.rp.sdk.base.IAliasResult;
import com.gexin.rp.sdk.base.IBatch;
import com.gexin.rp.sdk.base.IIGtPush;
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.NotificationTemplate;
import com.gexin.rp.sdk.template.TransmissionTemplate;
import com.gexin.rp.sdk.template.style.Style0;public classGetuiUtils {/*AppID:
kk36iGrKYvAPFLdEVhfru6
AppSecret:
qXTAXKDSye5hd2QA3FjsP2
AppKey:
Jux7ogPLMUAybHJcSOmgC7
MasterSecret:
II9oWPnaZK9heOl4keBmS9*/
private static String appId = "kk36iGrKYvAPFLdEVhfru6";private static String appKey = "Jux7ogPLMUAybHJcSOmgC7";private static String masterSecret = "II9oWPnaZK9heOl4keBmS9";public static String host = "https://sdk.open.api.igexin.com/apiex.htm";public static String CID_A = "81a3d3c3bee1adb51d306771af2aeb6a";//在打包后的APP的js中获取 var cId = plus.push.getClientInfo().clientid;
public static String CID_B = "bae837b470994d614f0773097b92dbf3";public staticIGtPush push;static{
push= newIGtPush(host, appKey, masterSecret);
}/**
* 绑定用户cid 别名
*
* @param Alias
* @param CID
* @return*/
public staticboolean bindAlias(String alias, String CID) {
IAliasResult bindSCid=push.bindAlias(appId, alias, CID);if(bindSCid.getResult()) {return true;
}return false;
}/**
* 对单个用户推送消息
*
* @param alias
* @param msg
* @return*/
public staticboolean pushMessageToSingle(String cid, String text, String transMsg) {
IGtPush push= newIGtPush(host, appKey, masterSecret);
NotificationTemplate template= notificationTemplate("title", text, transMsg);
SingleMessage message= newSingleMessage();
message.setOffline(true);//离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 3600 * 1000);
message.setData(template);//可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
Target target= newTarget();
target.setAppId(appId);
target.setClientId(cid);//target.setAlias(Alias);
IPushResult ret = null;try{
ret=push.pushMessageToSingle(message, target);
}catch(RequestException e) {
e.printStackTrace();
ret=push.pushMessageToSingle(message, target, e.getRequestId());
}if (ret != null && ret.getResponse() != null && ret.getResponse().containsKey("result")) {
System.out.println(ret.getResponse().toString());if (ret.getResponse().get("result").toString().equals("ok") && ret.getResponse().containsKey("status")) {return true;
}
}return false;
}/**
* 指定应用的所有用户群发推送消息
*
* @param msg*/
public staticboolean pushtoAPP(String text, String transMsg) {
IGtPush push= newIGtPush(host, appKey, masterSecret);
NotificationTemplate template= notificationTemplate("title", text, transMsg);
AppMessage message= newAppMessage();
message.setData(template);
message.setOffline(true);//离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 1000 * 3600);//推送给App的目标用户需要满足的条件
AppConditions cdt = newAppConditions();
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, "msg_toApp");if (ret != null && ret.getResponse() != null && ret.getResponse().containsKey("result")) {
System.out.println(ret.getResponse().toString());if (ret.getResponse().get("result").toString().equals("ok")) {return true;
}
}return false;
}/**
* 对单个用户推送透传消息
*
* @param alias
* @param title
* @param content
* @return*/
public staticboolean pushTransMessageToSingle(String cid, String msg) {
TransmissionTemplate template=transTemplate(cid, msg);
SingleMessage message= newSingleMessage();
message.setOffline(true);//离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 3600 * 1000);
message.setData(template);//可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
Target target= newTarget();
target.setAppId(appId);
target.setClientId(cid);
IPushResult ret= null;try{
ret=push.pushMessageToSingle(message, target);
}catch(RequestException e) {
e.printStackTrace();
ret=push.pushMessageToSingle(message, target, e.getRequestId());
}if (ret != null && ret.getResponse() != null && ret.getResponse().containsKey("result")) {
System.out.println(ret.getResponse().toString());if (ret.getResponse().get("result").toString().equals("ok") && ret.getResponse().containsKey("status")) {return true;
}
}return false;
}public static void pushMessageToIBatch(Listalias, String msg) {
IBatch batch=push.getBatch();
IPushResult ret= null;try{for (int i = 0; i < alias.size(); i++) {//构建客户a的透传消息a
constructClientTransMsg(alias.get(i), msg, batch);
}//构建客户B的点击通知打开网页消息b//constructClientLinkMsg(CID_B,"msgB",batch);
ret =batch.submit();
}catch(Exception e) {
e.printStackTrace();
}
System.out.println(ret.getResponse().toString());
}private staticNotificationTemplate notificationTemplate(String title, String text, String obj) {
NotificationTemplate template= newNotificationTemplate();//设置APPID与APPKEY
template.setAppId(appId);
template.setAppkey(appKey);//透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(1);
template.setTransmissionContent(obj);//设置定时展示时间//template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
Style0 style = newStyle0();//设置通知栏标题与内容
style.setTitle(title);
style.setText(text);//配置通知栏图标
style.setLogo("XXX");//配置通知栏网络图标//style.setLogoUrl("");//设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
template.setStyle(style);returntemplate;
}private staticTransmissionTemplate transTemplate(String cid, String msg) {
TransmissionTemplate template= newTransmissionTemplate();//设置APPID与APPKEY
template.setAppId(appId);
template.setAppkey(appKey);
template.setTransmissionContent(msg);
template.setTransmissionType(0); //这个Type为int型,填写1则自动启动app
returntemplate;
}//点击通知打开应用模板
public static voidconstructClientTransMsg(String cid, String msg, IBatch batch) throws Exception {
SingleMessage message= newSingleMessage();
NotificationTemplate template= newNotificationTemplate();//TransmissionTemplate template = new TransmissionTemplate();//自定义模板
template.setAppId(appId);
template.setAppkey(appKey);
template.setTransmissionContent(msg);//消息内容
template.setTransmissionType(1); //这个Type为int型,填写1则自动启动app
Style0 style = new Style0(); //设置通知栏标题与内容
style.setTitle("第一个通知");
style.setText(msg);//配置通知栏图标
style.setLogo("icon.png"); //配置通知栏网络图标
style.setLogoUrl("");//网络图标地址//设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
template.setStyle(style);
message.setData(template);
message.setOffline(true);
message.setOfflineExpireTime(60 * 60 * 1000);//设置推送目标,填入appid和clientId
Target target = newTarget();
target.setAppId(appId);
target.setClientId(cid);
batch.add(message, target);
}//点击通知打开网页消息
public static voidconstructClientLinkMsg(String cid, String msg, IBatch batch) throws Exception {
SingleMessage message= newSingleMessage();
LinkTemplate template= newLinkTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setTitle("title");
template.setText(msg);
template.setLogo("push.png");
template.setLogoUrl("logoUrl");
template.setUrl("http://www.baidu.com");
message.setData(template);
message.setOffline(true);
message.setOfflineExpireTime(60 * 1000);//设置推送目标,填入appid和clientId
Target target = newTarget();
target.setAppId(appId);
target.setClientId(cid);
batch.add(message, target);
}
}