仅实现了个推、列推和全推,话不多少,直接上代码!!!!
1、配置pom文件
<dependency>
<groupId>com.gexin.platform</groupId>
<artifactId>gexin-rp-sdk-http</artifactId>
<version>4.1.0.5</version>
</dependency>
<repositories>
<repository>
<id>getui-nexus</id>
<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
</repository>
</repositories>
2、封装个推
/**
* 个推 基础API
*/
public class AppPushApi {
//个推APPID
@Value("${config.gexin.appId}")
private StringappId;
//个推APPKEY
@Value("${config.gexin.appKey}")
private StringappKey;
//个推masterSecret
@Value("${config.gexin.masterSecret}")
private StringmasterSecret;
static Stringhost ="http://sdk.open.api.igexin.com/apiex.htm";
/******************************************
* 请求方式
******************************************/
/**
* 单个用户推送
*
* @param pushMessage
* @return
*/
public String singlePush (PushMessage pushMessage) {
IGtPush push =null;
push =new IGtPush(host, appKey, masterSecret);
SingleMessage message =new SingleMessage();
setMessageData(message, pushMessage);
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 *3600 *1000);
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
Target target =new Target();
target.setAppId(appId);
target.setClientId(pushMessage.getSevCId());
IPushResult ret =null;
try {
ret = push.pushMessageToSingle(message, target);
}catch (RequestException e) {
e.printStackTrace();
ret = push.pushMessageToSingle(message, target, e.getRequestId());
}
if (ret !=null) {
return ret.getResponse().toString();
}else {
System.out.println("个推服务器响应异常");
return "";
}
}
/**
* 设置消息数据
*
* @param message
* @param pushMessage
*/
private void setMessageData(Message message, PushMessage pushMessage) {
int model = pushMessage.getModel();
switch (model) {
case 1: {
NotificationTemplate template = notificationTemplateDemo(pushMessage);//app首页
message.setData(template);
}
break;
case 2: {
StartActivityTemplate template = startActivityTemplateDemo(pushMessage);//app内页
message.setData(template);
}
break;
case 3: {
LinkTemplate template = linkTemplateDemo(pushMessage);//网页
message.setData(template);
}
break;
case 4: {
TransmissionTemplate template = transmissionTemplateDemo(pushMessage);//透传消息模版
message.setData(template);
}
break;
case 5: {
TransmissionTemplate template = getTemplate(pushMessage);//iOS模版说明(JAVA)
message.setData(template);
}
break;
case 6: {
RevokeTemplate template = revokeTemplateDemo(pushMessage);//通知消息撤回
message.setData(template);
}
break;
default: {
NotificationTemplate template = notificationTemplateDemo(pushMessage);//点击通知打开应用模板
message.setData(template);
}
break;
}
}
/**
* 用户列表推送 单次推送数量限制1000以内,此接口频次限制200万次/天
*
* @param pushMessage
*/
public StringlistPush(PushMessage pushMessage) {
IIGtPush push =new IGtPush(host, appKey, masterSecret);
ListMessage message =new ListMessage();
setMessageData(message, pushMessage);
// 设置消息离线,并设置离线时间
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 *3600 *1000);
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
// 配置推送目标
List targets =new ArrayList<>();
String[] cids = pushMessage.getSevCId().split(",");
if (cids.length >0) {
for (String cid : cids) {
Target target =new Target();
target.setAppId(appId);
target.setClientId(cid);
targets.add(target);
}
// taskId用于在推送时去查找对应的message
String taskId = push.getContentId(message);
IPushResult ret =null;
try {
ret = push.pushMessageToList(taskId, targets);
}catch (RequestException e) {
e.printStackTrace();
ret = push.pushMessageToList(taskId, targets);
}
if (ret !=null) {
return ret.getResponse().toString();
}else {
System.out.println("个推服务器响应异常");
return "";
}
}
return "";
}
/**
* 全部用户推送
*
* @param pushMessage
* @return
*/
public String allPush (PushMessage pushMessage) {
IGtPush push =new IGtPush(host, appKey, masterSecret);
AppMessage message =new AppMessage();
setMessageData(message, pushMessage);
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, "任务别名_toApp");
return ret.getResponse().toString();
}
/******************************************
* 模板
******************************************/
//1.打开应用首页
public NotificationTemplatenotificationTemplateDemo(PushMessage pushMessage) {
NotificationTemplate template =new NotificationTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(1);
//透传内容,不在通知栏中展示,自定义内容,开发者自行处理,不支持转义字符
//规定intent规则:zw://项目名/activity 全路径?parm1=value1&parm2=value2
template.setTransmissionContent(pushMessage.getIntent());
Style0 style =new Style0();
// 设置通知栏标题与内容
style.setTitle(pushMessage.getTitle());
style.setText(pushMessage.getContent());
// 配置通知栏图标
style.setLogo("icon.png");
// 配置通知栏网络图标
style.setLogoUrl(pushMessage.getIconUrl());
// 设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
style.setChannel("默认channel");
style.setChannelName("默认channel名称");
style.setChannelLevel(3);//3:有声音,有震动,锁屏和通知栏中都显示,通知唤醒屏幕。(推荐)
template.setStyle(style);
// 设置定时展示时间,安卓机型可用
// template.setDuration("2019-08-16 11:40:00", "2019-08-16 12:24:00");
// 消息覆盖
template.setNotifyid(pushMessage.getMsgId()); // 在消息推送的时候设置自定义的notifyid。如果需要覆盖此条消息,则下次使用相同的notifyid发一条新的消息。客户端sdk会根据notifyid进行覆盖。
return template;
}
//2.打开应用内页面(暂不成熟 2019-10-24)
public StartActivityTemplatestartActivityTemplateDemo(PushMessage pushMessage) {
StartActivityTemplate template =new StartActivityTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
Style0 style =new Style0();
// 设置通知栏标题与内容
style.setTitle(pushMessage.getTitle());
style.setText(pushMessage.getContent());
// 配置通知栏图标
style.setLogo("icon.png");
// 配置通知栏网络图标
style.setLogoUrl(pushMessage.getIconUrl());
// 设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
style.setChannel("默认channel");
style.setChannelName("默认channel名称");
style.setChannelLevel(3);
template.setStyle(style);
//intent:#Intent;component=你的包名/你要打开的 activity 全路径;S.parm1=value1;S.parm2=value2;end
//String intent = "intent:#Intent;component=com.yourpackage/.NewsActivity;end";
template.setIntent(pushMessage.getIntent()); //目标页面地址,最大长度限制为1000
// 设置定时展示时间,安卓机型可用
// template.setDuration("2019-08-16 11:40:00", "2019-08-16 12:24:00");
// 消息覆盖
template.setNotifyid(pushMessage.getMsgId()); // 在消息推送的时候设置自定义的notifyid。如果需要覆盖此条消息,则下次使用相同的notifyid发一条新的消息。客户端sdk会根据notifyid进行覆盖。
return template;
}
//3\. 点击通知打开网页模板
public LinkTemplatelinkTemplateDemo(PushMessage pushMessage) {
LinkTemplate template =new LinkTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
Style0 style =new Style0();
// 设置通知栏标题与内容
style.setTitle(pushMessage.getTitle());
style.setText(pushMessage.getContent());
// 配置通知栏图标
style.setLogo("icon.png");
// 配置通知栏网络图标
style.setLogoUrl(pushMessage.getIconUrl());
// 设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
style.setChannel("环球直聘-191022");
style.setChannelName("环球直聘");
style.setChannelLevel(3);
template.setStyle(style);
// 设置打开的网址地址
template.setUrl(pushMessage.getGoUrl());
// 设置定时展示时间,安卓机型可用
// template.setDuration("2019-08-16 11:40:00", "2019-08-16 12:24:00");
// 消息覆盖
template.setNotifyid(pushMessage.getMsgId()); // 在消息推送的时候设置自定义的notifyid。如果需要覆盖此条消息,则下次使用相同的notifyid发一条新的消息。客户端sdk会根据notifyid进行覆盖。
return template;
}
//4\. 透传消息模版
public TransmissionTemplatetransmissionTemplateDemo(PushMessage pushMessage) {
TransmissionTemplate template =new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(2);
template.setTransmissionContent(pushMessage.getIntent());
// 设置定时展示时间
// template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
return template;
}
//5\. iOS模版说明(JAVA)
public TransmissionTemplategetTemplate(PushMessage pushMessage) {
TransmissionTemplate template =new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setTransmissionContent(pushMessage.getIntent());//透传内容
template.setTransmissionType(2);
template.setAPNInfo(getAPNPayload(pushMessage));
return template;
}
private static APNPayloadgetAPNPayload(PushMessage pushMessage) {
APNPayload payload =new APNPayload();
//在已有数字基础上加1显示,设置为-1时,在已有数字上减1显示,设置为数字时,显示指定数字
payload.setAutoBadge("+1");
payload.setContentAvailable(1);//推送直接带有透传数据
//ios 12.0 以上可以使用 Dictionary 类型的 sound
payload.setSound("default");
payload.setCategory("$由客户端定义");
payload.addCustomMsg("由客户自定义消息key", "由客户自定义消息value");
//简单模式APNPayload.SimpleMsg
//payload.setAlertMsg(new APNPayload.SimpleAlertMsg(map.get("title").toString()));
payload.setAlertMsg(getDictionaryAlertMsg(pushMessage)); //字典模式使用APNPayload.DictionaryAlertMsg
return payload;
}
private static APNPayload.DictionaryAlertMsggetDictionaryAlertMsg(PushMessage pushMessage) {
APNPayload.DictionaryAlertMsg alertMsg =new APNPayload.DictionaryAlertMsg();
alertMsg.setBody(pushMessage.getContent());
// alertMsg.setActionLocKey("ActionLockey");
// alertMsg.setLocKey("loc-key1");
// alertMsg.addLocArg("loc-ary1");
// alertMsg.setLaunchImage("launch-image");
// IOS8.2以上版本支持
alertMsg.setTitle(pushMessage.getTitle());
// alertMsg.setTitleLocKey("自定义通知标题");
// alertMsg.addTitleLocArg("自定义通知标题组");
return alertMsg;
}
//6.通知消息撤回
public RevokeTemplaterevokeTemplateDemo(PushMessage pushMessage) {
RevokeTemplate template =new RevokeTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setOldTaskId(pushMessage.getMsgId().toString());
template.setForce(false);
return template;
}
//7.停止批量推
public void stopListPushDemo(String contentId) {
IIGtPush push =new IGtPush(host, appKey, masterSecret);
push.stop(contentId);
}
3、个推配置
①登录个推,创建应用,如图3-1
3-1
②按图3-2说话即可
3-2
③各种配置3-3
3-3
注意一点的是iOS是用的p12证书,填写完毕后可以获取一个token测试一下是否通了。
4、调用截图
image
PushMessage pushMessage =new PushMessage();
pushMessage.setModel(5);//模式,详看代码
pushMessage.setSevCId("个推需要的cid");
pushMessage.setTitle("标题");
pushMessage.setContent("内容");
pushMessage.setIconUrl("网络icon");
pushMessage.setMsgId(123);//可用户覆盖的消息id
pushMessage.setIntent("透传内容");
String strResponse =appPushApi.singlePush(pushMessage);
System.out.println("返回内容:" + strResponse);
<dependency>
<groupId>com.gexin.platform</groupId>
<artifactId>gexin-rp-sdk-http</artifactId>
<version>4.1.0.5</version>
</dependency>
<repositories>
<repository>
<id>getui-nexus</id>
<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
</repository>
</repositories>
2、封装个推
/**
* 个推 基础API
*/
public class AppPushApi {
//个推APPID
@Value("${config.gexin.appId}")
private StringappId;
//个推APPKEY
@Value("${config.gexin.appKey}")
private StringappKey;
//个推masterSecret
@Value("${config.gexin.masterSecret}")
private StringmasterSecret;
static Stringhost ="http://sdk.open.api.igexin.com/apiex.htm";
/******************************************
* 请求方式
******************************************/
/**
* 单个用户推送
*
* @param pushMessage
* @return
*/
public String singlePush (PushMessage pushMessage) {
IGtPush push =null;
push =new IGtPush(host, appKey, masterSecret);
SingleMessage message =new SingleMessage();
setMessageData(message, pushMessage);
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 *3600 *1000);
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
Target target =new Target();
target.setAppId(appId);
target.setClientId(pushMessage.getSevCId());
IPushResult ret =null;
try {
ret = push.pushMessageToSingle(message, target);
}catch (RequestException e) {
e.printStackTrace();
ret = push.pushMessageToSingle(message, target, e.getRequestId());
}
if (ret !=null) {
return ret.getResponse().toString();
}else {
System.out.println("个推服务器响应异常");
return "";
}
}
/**
* 设置消息数据
*
* @param message
* @param pushMessage
*/
private void setMessageData(Message message, PushMessage pushMessage) {
int model = pushMessage.getModel();
switch (model) {
case 1: {
NotificationTemplate template = notificationTemplateDemo(pushMessage);//app首页
message.setData(template);
}
break;
case 2: {
StartActivityTemplate template = startActivityTemplateDemo(pushMessage);//app内页
message.setData(template);
}
break;
case 3: {
LinkTemplate template = linkTemplateDemo(pushMessage);//网页
message.setData(template);
}
break;
case 4: {
TransmissionTemplate template = transmissionTemplateDemo(pushMessage);//透传消息模版
message.setData(template);
}
break;
case 5: {
TransmissionTemplate template = getTemplate(pushMessage);//iOS模版说明(JAVA)
message.setData(template);
}
break;
case 6: {
RevokeTemplate template = revokeTemplateDemo(pushMessage);//通知消息撤回
message.setData(template);
}
break;
default: {
NotificationTemplate template = notificationTemplateDemo(pushMessage);//点击通知打开应用模板
message.setData(template);
}
break;
}
}
/**
* 用户列表推送 单次推送数量限制1000以内,此接口频次限制200万次/天
*
* @param pushMessage
*/
public StringlistPush(PushMessage pushMessage) {
IIGtPush push =new IGtPush(host, appKey, masterSecret);
ListMessage message =new ListMessage();
setMessageData(message, pushMessage);
// 设置消息离线,并设置离线时间
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 *3600 *1000);
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
// 配置推送目标
List targets =new ArrayList<>();
String[] cids = pushMessage.getSevCId().split(",");
if (cids.length >0) {
for (String cid : cids) {
Target target =new Target();
target.setAppId(appId);
target.setClientId(cid);
targets.add(target);
}
// taskId用于在推送时去查找对应的message
String taskId = push.getContentId(message);
IPushResult ret =null;
try {
ret = push.pushMessageToList(taskId, targets);
}catch (RequestException e) {
e.printStackTrace();
ret = push.pushMessageToList(taskId, targets);
}
if (ret !=null) {
return ret.getResponse().toString();
}else {
System.out.println("个推服务器响应异常");
return "";
}
}
return "";
}
/**
* 全部用户推送
*
* @param pushMessage
* @return
*/
public String allPush (PushMessage pushMessage) {
IGtPush push =new IGtPush(host, appKey, masterSecret);
AppMessage message =new AppMessage();
setMessageData(message, pushMessage);
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, "任务别名_toApp");
return ret.getResponse().toString();
}
/******************************************
* 模板
******************************************/
//1.打开应用首页
public NotificationTemplatenotificationTemplateDemo(PushMessage pushMessage) {
NotificationTemplate template =new NotificationTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(1);
//透传内容,不在通知栏中展示,自定义内容,开发者自行处理,不支持转义字符
//规定intent规则:zw://项目名/activity 全路径?parm1=value1&parm2=value2
template.setTransmissionContent(pushMessage.getIntent());
Style0 style =new Style0();
// 设置通知栏标题与内容
style.setTitle(pushMessage.getTitle());
style.setText(pushMessage.getContent());
// 配置通知栏图标
style.setLogo("icon.png");
// 配置通知栏网络图标
style.setLogoUrl(pushMessage.getIconUrl());
// 设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
style.setChannel("默认channel");
style.setChannelName("默认channel名称");
style.setChannelLevel(3);//3:有声音,有震动,锁屏和通知栏中都显示,通知唤醒屏幕。(推荐)
template.setStyle(style);
// 设置定时展示时间,安卓机型可用
// template.setDuration("2019-08-16 11:40:00", "2019-08-16 12:24:00");
// 消息覆盖
template.setNotifyid(pushMessage.getMsgId()); // 在消息推送的时候设置自定义的notifyid。如果需要覆盖此条消息,则下次使用相同的notifyid发一条新的消息。客户端sdk会根据notifyid进行覆盖。
return template;
}
//2.打开应用内页面(暂不成熟 2019-10-24)
public StartActivityTemplatestartActivityTemplateDemo(PushMessage pushMessage) {
StartActivityTemplate template =new StartActivityTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
Style0 style =new Style0();
// 设置通知栏标题与内容
style.setTitle(pushMessage.getTitle());
style.setText(pushMessage.getContent());
// 配置通知栏图标
style.setLogo("icon.png");
// 配置通知栏网络图标
style.setLogoUrl(pushMessage.getIconUrl());
// 设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
style.setChannel("默认channel");
style.setChannelName("默认channel名称");
style.setChannelLevel(3);
template.setStyle(style);
//intent:#Intent;component=你的包名/你要打开的 activity 全路径;S.parm1=value1;S.parm2=value2;end
//String intent = "intent:#Intent;component=com.yourpackage/.NewsActivity;end";
template.setIntent(pushMessage.getIntent()); //目标页面地址,最大长度限制为1000
// 设置定时展示时间,安卓机型可用
// template.setDuration("2019-08-16 11:40:00", "2019-08-16 12:24:00");
// 消息覆盖
template.setNotifyid(pushMessage.getMsgId()); // 在消息推送的时候设置自定义的notifyid。如果需要覆盖此条消息,则下次使用相同的notifyid发一条新的消息。客户端sdk会根据notifyid进行覆盖。
return template;
}
//3\. 点击通知打开网页模板
public LinkTemplatelinkTemplateDemo(PushMessage pushMessage) {
LinkTemplate template =new LinkTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
Style0 style =new Style0();
// 设置通知栏标题与内容
style.setTitle(pushMessage.getTitle());
style.setText(pushMessage.getContent());
// 配置通知栏图标
style.setLogo("icon.png");
// 配置通知栏网络图标
style.setLogoUrl(pushMessage.getIconUrl());
// 设置通知是否响铃,震动,或者可清除
style.setRing(true);
style.setVibrate(true);
style.setClearable(true);
style.setChannel("环球直聘-191022");
style.setChannelName("环球直聘");
style.setChannelLevel(3);
template.setStyle(style);
// 设置打开的网址地址
template.setUrl(pushMessage.getGoUrl());
// 设置定时展示时间,安卓机型可用
// template.setDuration("2019-08-16 11:40:00", "2019-08-16 12:24:00");
// 消息覆盖
template.setNotifyid(pushMessage.getMsgId()); // 在消息推送的时候设置自定义的notifyid。如果需要覆盖此条消息,则下次使用相同的notifyid发一条新的消息。客户端sdk会根据notifyid进行覆盖。
return template;
}
//4\. 透传消息模版
public TransmissionTemplatetransmissionTemplateDemo(PushMessage pushMessage) {
TransmissionTemplate template =new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(2);
template.setTransmissionContent(pushMessage.getIntent());
// 设置定时展示时间
// template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
return template;
}
//5\. iOS模版说明(JAVA)
public TransmissionTemplategetTemplate(PushMessage pushMessage) {
TransmissionTemplate template =new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setTransmissionContent(pushMessage.getIntent());//透传内容
template.setTransmissionType(2);
template.setAPNInfo(getAPNPayload(pushMessage));
return template;
}
private static APNPayloadgetAPNPayload(PushMessage pushMessage) {
APNPayload payload =new APNPayload();
//在已有数字基础上加1显示,设置为-1时,在已有数字上减1显示,设置为数字时,显示指定数字
payload.setAutoBadge("+1");
payload.setContentAvailable(1);//推送直接带有透传数据
//ios 12.0 以上可以使用 Dictionary 类型的 sound
payload.setSound("default");
payload.setCategory("$由客户端定义");
payload.addCustomMsg("由客户自定义消息key", "由客户自定义消息value");
//简单模式APNPayload.SimpleMsg
//payload.setAlertMsg(new APNPayload.SimpleAlertMsg(map.get("title").toString()));
payload.setAlertMsg(getDictionaryAlertMsg(pushMessage)); //字典模式使用APNPayload.DictionaryAlertMsg
return payload;
}
private static APNPayload.DictionaryAlertMsggetDictionaryAlertMsg(PushMessage pushMessage) {
APNPayload.DictionaryAlertMsg alertMsg =new APNPayload.DictionaryAlertMsg();
alertMsg.setBody(pushMessage.getContent());
// alertMsg.setActionLocKey("ActionLockey");
// alertMsg.setLocKey("loc-key1");
// alertMsg.addLocArg("loc-ary1");
// alertMsg.setLaunchImage("launch-image");
// IOS8.2以上版本支持
alertMsg.setTitle(pushMessage.getTitle());
// alertMsg.setTitleLocKey("自定义通知标题");
// alertMsg.addTitleLocArg("自定义通知标题组");
return alertMsg;
}
//6.通知消息撤回
public RevokeTemplaterevokeTemplateDemo(PushMessage pushMessage) {
RevokeTemplate template =new RevokeTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setOldTaskId(pushMessage.getMsgId().toString());
template.setForce(false);
return template;
}
//7.停止批量推
public void stopListPushDemo(String contentId) {
IIGtPush push =new IGtPush(host, appKey, masterSecret);
push.stop(contentId);
}
3、个推配置
①登录个推,创建应用,如图3-1
image
②按图3-2说话即可
image
③各种配置3-3
image
注意一点的是iOS是用的p12证书,填写完毕后可以获取一个token测试一下是否通了。
4、调用方法
PushMessage pushMessage =new PushMessage();
pushMessage.setModel(5);//模式,详看代码
pushMessage.setSevCId("个推需要的cid");
pushMessage.setTitle("标题");
pushMessage.setContent("内容");
pushMessage.setIconUrl("网络icon");
pushMessage.setMsgId(123);//可用户覆盖的消息id
pushMessage.setIntent("透传内容");
String strResponse =appPushApi.singlePush(pushMessage);
System.out.println("返回内容:" + strResponse);









网友评论