// 监听在线消息事件
plus.push.addEventListener("receive", function(msg) {
if(msg.aps) { //如果消息是通过APS通道发送到终端,用户可以在“receive”事件回调的“PushMesage”对象中获取“aps”属性的值
//mui.toast("接收到在线APNS消息:");
} else {
var payload = msg.payload;
var title = msg.title;
var content = msg.content;
if(payload != "payload") {
plus.push.createMessage(content, "payload", {});
}
}
}, false);
package com.fgdz.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.fgdz.common.WebConfig;
import com.fgdz.dao.TUserClient;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.ITemplate;
import com.gexin.rp.sdk.base.em.EPushResult;
import com.gexin.rp.sdk.base.impl.ListMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.base.payload.APNPayload;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.NotificationTemplate;
import com.gexin.rp.sdk.template.TransmissionTemplate;
import com.gexin.rp.sdk.template.style.Style0;
/**
* 个推的java服务端发送消息推送
*/
public class GeTuiPushUtil {
// 定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
private static String appId = "ZqenrIEpuQ6ORuEktWvYD6";
private static String appKey = "vYR4bp28VQ7PAddJYAG3j1";
private static String masterSecret = "4NkMiCiac3AmNidmsVgYh6";
private static String host = "http://sdk.open.api.igexin.com/apiex.htm";
@SuppressWarnings("deprecation")
public static boolean pushMessageToList(String title, String message, Map<String, String> extendInfo,
boolean offline, long offlineExpireTime, List<TUserClient> clientList) {
if (!WebConfig.isEnableJPush)
return true;
try {
IGtPush push = new IGtPush(host, appKey, masterSecret);
// 通知透传模板
ListMessage listMessage = new ListMessage();
ITemplate template = getTransmissionTemplate(title, message, JSON.toJSONString(extendInfo));
listMessage.setData(template);
// 设置消息离线,并设置离线时间
listMessage.setOffline(offline);
// 离线有效时间,单位为毫秒,可选
listMessage.setOfflineExpireTime(offlineExpireTime);
// 配置推送目标
List<Target> targets = new ArrayList<Target>();
for (TUserClient client : clientList) {
// TODO: 一次建议50-100个CID
Target target = new Target();
target.setAppId(appId);// 必填,设置客户端所属应用唯一ID
target.setClientId(client.getClientId());// 必填,设置客户端身份ID
targets.add(target);
}
// taskId用于在推送时去查找对应的message
String taskId = push.getContentId(listMessage);
IPushResult result = push.pushMessageToList(taskId, targets);
return result.getResultCode() == EPushResult.RESULT_OK;
} catch (Exception e) {
Tracker.e(e);
return false;
}
}
/**
* 透传消息模版
*
* @param title
* @param text
* @param content
* @return
*/
private static TransmissionTemplate getTransmissionTemplate(String title, String text, String content) {
TransmissionTemplate template = new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionType(2);
template.setTransmissionContent(text + "电压过高");
// 设置定时展示时间
// template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
// iOS推送使用该字段
APNPayload payload = new APNPayload();
payload.setAutoBadge("0");// 设置角标,还可以实现显示数字的自动增减,如"+1"、"-1"、"1"等
payload.setContentAvailable(1);// 推送直接带有透传数据
payload.setSound("default"); // 通知铃声文件名,无声设置为"com.gexin.ios.silence"
payload.setAlertMsg(getDictionaryAlertMsg(title, text)); // 字典模式使用APNPayload.DictionaryAlertMsg
template.setAPNInfo(payload);
return template;
}
/**
* 通知消息模版
*
* @param title
* @param text
* @param content
* @return
*/
private static NotificationTemplate getNotificationTemplate(String title, String text, String content) {
NotificationTemplate template = new NotificationTemplate();
template.setAppId(appId);// 设置APPID
template.setAppkey(appKey);// 设置APPKEY
template.setTransmissionType(1);// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
template.setTransmissionContent(content);
Style0 style = new Style0();
style.setTitle(title);// 设置通知栏标题
style.setText(text);// 设置通知栏内容
style.setLogoUrl(""); // 配置通知栏网络图标
style.setRing(true);// 设置通知是否响铃
style.setVibrate(true);// 设置通知是否震动
style.setClearable(true);// 设置通知是否可清除
template.setStyle(style);
return template;
}
private static APNPayload.DictionaryAlertMsg getDictionaryAlertMsg(String title, String text) {
APNPayload.DictionaryAlertMsg alertMsg = new APNPayload.DictionaryAlertMsg();
alertMsg.setBody(text);// 通知文本消息字符串
alertMsg.setActionLocKey("ActionLockey");// (用于多语言支持)指定执行按钮所使用的Localizable.strings
alertMsg.setLocKey("LocKey");// (用于多语言支持)指定Localizable.strings文件中相应的key
alertMsg.addLocArg("loc-args");// 如果loc-key中使用的占位符,则在loc-args中指定各参数
alertMsg.setLaunchImage("launch-image");// 指定启动界面图片名
// iOS8.2以上版本支持
alertMsg.setTitle(title);// 通知标题
alertMsg.setTitleLocKey("TitleLocKey");// (用于多语言支持)对于标题指定执行按钮所使用的Localizable.strings,仅支持iOS8.2以上版本
alertMsg.addTitleLocArg("TitleLocArg");// 标题,如果loc-key中使用的占位符,则在loc-args中指定各参数,仅支持iOS8.2以上版本
return alertMsg;
}
}
1 个回复
1***@qq.com - 90后IT男
你好,解决了吗,我也遇到了同样的问题,能否帮忙解一下