apicloud极光推送

 //在极光注册上传应用的 appKey 和 masterSecret  
	private final static String appKey = "*****";
    private final static String masterSecret = "****";
    private final static int maxtrytimes = 3;
    private static JPushClient jpushClient = new JPushClient(masterSecret, appKey, maxtrytimes);

    public PushPayload buildPushObject(String title, String content,
                    String from, Audience audience ,Map extra,Boolean sendNotify) {
                    //推送对象构造
            AndroidNotification android = AndroidNotification.newBuilder()
                            .setTitle(title).setAlert(content)
                            .addExtra("from", from)
                            .addExtra("sendtime", System.currentTimeMillis()).build();
            IosNotification ios = IosNotification.newBuilder().incrBadge(1)
                            .addExtra("from", from).setSound("default")
                            .addExtra("sendtime", System.currentTimeMillis()).build();

            Notification notification = Notification.newBuilder().setAlert(content)
            		.addPlatformNotification(android).addPlatformNotification(ios)
                            .build();//通知构造
            
            

            Message msg;
            //消息构造
            if(extra==null){
                    msg = Message.newBuilder().setTitle(title)
                    .setMsgContent(content).build();
            }else{
                    msg = Message.newBuilder().setTitle(title)
                    .setMsgContent(content).addExtras(extra).build();
                    //发送额外信息可用addExtras传map,也可直接用addExtra传键值对
            }
            if(sendNotify){
                    return PushPayload.newBuilder().setPlatform(Platform.android_ios())
                    .setAudience(audience).setNotification(notification).setMessage(msg)
                    .build();
            }else{
                    return PushPayload.newBuilder().setPlatform(Platform.android_ios())
                    .setAudience(audience)
                    .setMessage(msg).build();
            }
    }

    public static void send() throws APIConnectionException, APIRequestException{
    	//testSend();
    	MessagePush s = new MessagePush();
        Map extra = new HashMap();
        extra.put("title", "好消息【点击查看】");
        PushPayload payload = s.buildPushObject("好消息【点击查看】", "您有一条待办需要处理!",
                        "测试", Audience.all(),extra,false);
        PushResult result = s.jpushClient.sendPush(payload);
        System.err.println(result);
    }
//apicloud 测试极光推送成功 
var jpush = null;
 apiready = function() {
initPush();
}

function initPush(){
    // 实例化极光推送对象
    jpush = api.require('ajpush');
    // 初始化推送服务,只Android有效,ios上会自动初始化
    jpush.init(function(ret, err) {
    });
    //设置推送时间
    jpush.setPushTime({
      days: 1,
      startHour: 0,
      endHour: 23
    }, function(ret, err){});
    // 监听应用进入后台,通知jpush暂停事件
    api.addEventListener({
        name : 'pause'
    }, function(ret, err) {
        //统计-app暂停
        //jpush.onResume();
    });
    // 监听应用恢复到前台,通知jpush恢复事件
    api.addEventListener({
        name : 'resume'
    }, function(ret, err) {
        //统计-app恢复
        jpush.onResume();
    });
    // 监听通知被点击(Android)
    api.addEventListener({
        name : 'appintent'
    }, function(ret, err) {
        if (ret && ret.appParam.ajpush) {
            // 通知被点击后处理
            executeNotice(ret, "appintent");
        }
    });
    // 监听通知被点击(iOS应用处于后台)
    api.addEventListener({
        name : 'noticeclicked'
    }, function(ret, err) {
        if (ret && ret.value) {
            // 通知被点击后处理
            executeNotice(ret, "noticeclicked");
        }
    });
    // 消息监听
    jpush.setListener(function(re, er) {
        //alert($api.jsonToStr(re));
        if (re) {
            var tit = re.title; // 标题
            var con = re.content; // 内容
            var ex = {}; // 附加字段
            // 附加字段不为空
            if(re.extra){
                var ext = re.extra;
                ex = {"extra" : ext};
            }
            // 转为状态栏通知
            notification(tit, con, ex);
        }
    });
}

// 监听到的消息转为状态栏通知
function notification(t, c, e){
    api.notification({
        vibrate : [300, 500], //震动时间节奏
        sound : 'default', //系统默认提示音
        light : false, //是否亮灯,需设备支持
        notify : {//状态栏通知
            title : t || "系统消息", //标题,默认值为应用名称,只Android有效
            content : c, //内容,默认值为'有新消息'
            extra : e, //传递给通知的数据,在通知被点击后,该数据将通过监听函数回调给网页
            updateCurrent : false//是否覆盖更新已有的通知,取值范围true|false。只Android有效
        }
    }, function(ret, err) {
        //if(ret){
        //api.alert(ret.id);//id为通知ID,可用于取消通知
        //}
    });
}

// 通知被点击后处理
function executeNotice (ret, type) {
    var ajpush_obj; // 信息对象
    var extra = {}; // 附加字段
    if(type == "appintent"){
        ajpush_obj = ret.appParam.ajpush;
        if(!isEmptyObject(ajpush_obj)){
            if(!isEmptyObject(ajpush_obj.extra)){
                extra = ajpush_obj.extra;
            }
        }
    }else if(type == "noticeclicked"){
        ajpush_obj = ret.value;
        if(!isEmptyObject(ajpush_obj)){
            c = ajpush_obj.content;
            // 转为json字符串
            ajpush_obj = JSON.stringify(ajpush_obj);
            // 再转为json对象
            ajpush_obj = $.parseJSON(ajpush_obj);
            // 判断附加参数是否为空
            if(!isEmptyObject(ajpush_obj.extra)){
                //extra = $.parseJSON(ajpush_obj.extra);
                extra = ajpush_obj.extra;
            }
        }
    }

    // 附加字段不为空
    if(!isEmptyObject(extra)){
        if (api.systemType === "android") {
            // 赋值到附加字段(格式化为json)
            extra = JSON.parse(extra);
        }
        // 判断附加字段值
        if (extra.aa) { // 极光推送后台中添加的附加字段
            // 你的逻辑代码
        }
    }
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值