阿里云消息推送同时推送到iOS和android问题解决

1. SDK.InvalidRegionID :can not find endpoint to access

 

在阿里开发手册中给出的解决方法,产生原因是由于SDK核心包版本过低,升级版本即可解决。

相关文档

 

2.同时推送iOS和android

 

官方给出的demo仅设置一次appKey是不行的,只能推送的appKey所对应的一端,双端推送的话必须分两次设置并发送请求

    @Override
    public boolean sendMessage(AppMessageVo messageVo) {

        PushRequest pushRequest=new PushRequest();
        // 安全性比较高的内容建议使用HTTPS
        pushRequest.setProtocol(ProtocolType.HTTPS);
        // 内容较大的请求,使用POST请求
        pushRequest.setMethod(MethodType.POST);

        pushRequest.setTarget("ACCOUNT"); //推送目标: DEVICE:按设备推送 ALIAS : 按别名推送 ACCOUNT:按帐号推送  TAG:按标签推送; ALL: 广播推送
        pushRequest.setTargetValue(messageVo.getAccount());
        pushRequest.setPushType("NOTICE"); // 消息类型 MESSAGE NOTICE
        pushRequest.setDeviceType("ALL"); // 设备类型 ANDROID iOS ALL.

        pushRequest.setTitle(messageVo.getTitle()); // 消息的标题
        if(messageVo.getExtParameters()!=null){
            JSONObject exData=JSONObject.parseObject(messageVo.getExtParameters());
            pushRequest.setBody(exData.getString("content")); // 消息的内容
        }

        //IOS
        pushRequest.setIOSApnsEnv(env);
        pushRequest.setIOSMusic("default");
        pushRequest.setIOSMutableContent(true);//是否允许扩展iOS通知内容
        pushRequest.setIOSExtParameters(messageVo.getExtParameters()); //通知的扩展属性(注意 :该参数要以json map的格式传入,否则会解析出错)
        if(env.equals("PRODUCT")){
            pushRequest.setIOSRemind(true);
            pushRequest.setIOSRemindBody(messageVo.getBody());
        }

        //Android
        pushRequest.setAndroidMusic("default");
        pushRequest.setAndroidPopupTitle(messageVo.getTitle());
        pushRequest.setAndroidPopupBody(messageVo.getBody());
        pushRequest.setAndroidExtParameters(messageVo.getExtParameters());

        // 推送控制
        Date pushDate=new Date(System.currentTimeMillis()); // 30秒之间的时间点,也可以设置成你指定固定时间
        String pushTime=ParameterHelper.getISO8601Time(pushDate);
        pushRequest.setPushTime(pushTime); // 延后推送。可选,如果不设置表示立即推送
        String expireTime=ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // 12小时后消息失效,不会再发送
        pushRequest.setExpireTime(expireTime);
        pushRequest.setStoreOffline(true); // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
        try {
            pushRequest.setAppKey(iosKey);
            PushResponse iosRes=this.getClient().getAcsResponse(pushRequest);
            log.info("ios推送结果 messageId:{}",iosRes.getMessageId());

            pushRequest.setAppKey(androidKey);
            PushResponse androidRes=this.getClient().getAcsResponse(pushRequest);
            log.info("android推送结果 messageId:{}",androidRes.getMessageId());
            return true;
        } catch (ClientException e) {
            log.error("消息推送失败!",e);
            return false;
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值