9***@qq.com
9***@qq.com
  • 发布:2018-08-29 16:20
  • 更新:2019-11-01 23:27
  • 阅读:2773

个推 应用不在线,苹果消息中心,没有弹出通知

分类:5+ SDK
// 监听在线消息事件  
        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;  
    }  

}
2018-08-29 16:20 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com - 90后IT男

你好,解决了吗,我也遇到了同样的问题,能否帮忙解一下

该问题目前已经被锁定, 无法添加新回复