关于个推 vivo 接收不到离线消息问题
关于个推 vivo 接收不到离线消息问题
在2020年6月1日 vivo对消息推送管控进行调整,
对推送消息分为两种 0:运营消息 1:系统消息
在java 使用个推sdk的情况下 vivo对默认选择的推送消息类型为运营消息, 导致一个用户每天只能发送5条离线消息,5条过后将收不到消息,查看vivo开发平台发现消息已被管控。如下图:
以下是处理方式
主要设置 源码组件 第32行 以及第104行
源码 如下
maven依赖
<!--个推 消息推送 unipuh-->
<dependency><groupId>com.gexin.platform</groupId><artifactId>gexin-rp-sdk-http</artifactId><version>4.1.1.4</version>
</dependency>
组件
@Component
public class AppPush {private static final Logger log = LoggerFactory.getLogger(AppPush.class);// STEP1:获取应用基本信息@Value("${push.rider.appId}")private String riderAppId;@Value("${push.rider.appKey}")private String riderAppKey;@Value("${push.rider.masterSecret}")@Value("${push.url}")private String url;@Value("${push.rider.packet}")private String riderPacket;// 对单个骑手用户推送消息public IPushResult pushMsgToSingleByApp(String cid, Map<String, String> msg) {// 代表在个推注册的一个 app,调用该类实例的方法来执行对个推的请求IGtPush push = new IGtPush(riderAppKey, riderMasterSecret);// 创建信息模板TransmissionTemplate template = AppPush.getTransmissionTemplateWith3rdNotifyInfoAndAPNPayload(msg.get("title"),msg.get("titleText"), "0", msg,riderAppId,riderAppKey,riderPacket);//定义消息推送方式为,单推SingleMessage message = new SingleMessage();// 设置推送消息的内容message.setData(template);message.setOffline(true);// 设置消息离线,并设置离线时间message.setOfflineExpireTime(180 * 1000); // 离线有效时间,单位为毫秒,可选Map<String,Integer> map=new LinkedMap<>(7);map.put("default",1);
// map.put("hw",1);
// map.put("xm",4);map.put("vv",2); //优先厂推
// map.put("mz",4);
// map.put("op",4);message.setStrategyJson(JSONObject.toJSONString(map));
// message.setPushNetWorkType(0);// 设置推送目标Target target = new Target();target.setAppId(riderAppId);// 设置cidtarget.setClientId(cid);log.info("个推cid返回:"+cid);// 获得推送结果IPushResult result = push.pushMessageToSingle(message, target);log.info("个推提交返回打印:"+JSONUtils.toJSONString(result.getResponse()));/** 1. 失败:{result=sign_error}* 2. 成功:{result=ok, taskId=OSS-0212_1b7578259b74972b2bba556bb12a9f9a, status=successed_online}* 3. 异常*/return result;}/*** 获取同时有Android第三方推送及IOS推送功能的很透传消息** @param title 标题* @param body 正文* @param badge IOS的角标数* @param customParam 自定义属性* @return*/public static TransmissionTemplate getTransmissionTemplateWith3rdNotifyInfoAndAPNPayload(String title, String body, String badge,Map<String, String> customParam,String appId,String appKey,String packet) {TransmissionTemplate template = new TransmissionTemplate();// 设置APPID与APPKEYtemplate.setAppId(appId);template.setAppkey(appKey);// 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动template.setTransmissionType(2);template.setTransmissionContent(JSON.toJSONString(customParam)); // 透传内容// 第三方厂商推送template.set3rdNotifyInfo(get3rdNotifyInfo(title, body, customParam,packet));// 针对IOS,设置APNstemplate.setAPNInfo(getAPNPayload(title, body, badge, customParam)); // ios消息推送return template;}/*** 第三方厂商通知** @param title 标题* @param content 正文* @param payload 附带属性* @return*/private static Notify get3rdNotifyInfo(String title, String content, Map<String, String> payload,String packet ) {Notify notify = new Notify();notify.setTitle(title);notify.setContent(content);notify.setType(GtReq.NotifyInfo.Type._intent);//intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=com.bajiaostar.uuRunBiker;S.UP-OL-SU=true;S.title=123;S.content=123;S.payload=ceshi;end// /io.dcloud.PandoraEntryString intent= "intent:#Intent;launchFlags=0x14000000;action=android.intent.action.oppopush;component="+packet+";S.UP-OL-SU=true;S.title="+title+";S.content="+content+";S.payload=ceshi;end";notify.setIntent(intent);notify.setPayload(JSON.toJSONString(payload));//注意:这里是设置vivo推送消息类型notify.addVVExtKV("classification",1); return notify;}/*** IOS的APNs消息** @param title* @param body* @param badge* @param customMsg* @return*/private static APNPayload getAPNPayload(String title, String body, String badge, Map<String, String> customMsg) {APNPayload payload = new APNPayload();//在已有数字基础上加1显示,设置为-1时,在已有数字上减1显示,设置为数字时,显示指定数字payload.setAutoBadge(badge);payload.setContentAvailable(0);//ios 12.0 以上可以使用 Dictionary 类型的 soundpayload.setSound("default");// payload.setCategory("$由客户端定义");if (customMsg != null) {for (Map.Entry<String, String> enty : customMsg.entrySet()) {payload.addCustomMsg(enty.getKey(), enty.getValue());}}// payload.addCustomMsg("由客户自定义消息key", "由客户自定义消息value");//简单模式APNPayload.SimpleMsg// payload.setAlertMsg(new APNPayload.SimpleAlertMsg("hello"));payload.setAlertMsg(getDictionaryAlertMsg(title, body)); //字典模式使用APNPayload.DictionaryAlertMsg//设置语音播报类型,int类型,0.不可用 1.播放body 2.播放自定义文本// payload.setVoicePlayType(2);//设置语音播报内容,String类型,非必须参数,用户自定义播放内容,仅在voicePlayMessage=2时生效//注:当"定义类型"=2, "定义内容"为空时则忽略不播放// payload.setVoicePlayMessage("定义内容");// 添加多媒体资源
// payload.addMultiMedia(new MultiMedia()
// .setResType(MultiMedia.MediaType.pic)
// .setResUrl("资源文件地址")
// .setOnlyWifi(true));return payload;}/*** IOS通知提示样式** @param title* @param body* @return*/private static APNPayload.DictionaryAlertMsg getDictionaryAlertMsg(String title, String body) {APNPayload.DictionaryAlertMsg alertMsg = new APNPayload.DictionaryAlertMsg();alertMsg.setBody(body);
// alertMsg.setActionLocKey("显示关闭和查看两个按钮的消息");
// alertMsg.setLocKey("loc-key1");
// alertMsg.addLocArg("loc-ary1");
// alertMsg.setLaunchImage("调用已经在应用程序中绑定的图形文件名");// iOS8.2以上版本支持alertMsg.setTitle(title);
// alertMsg.setTitleLocKey("自定义通知标题");
// alertMsg.addTitleLocArg("自定义通知标题组");return alertMsg;}
}
以此作为记录学习
关于个推 vivo 接收不到离线消息问题相关推荐
- 一种通过xmpp实现离线消息推送的方法及系统
公开号 : CN 104243271 A 专利申请号 : CN 201310230953 申请人 : 深圳中兴网信科技有限公司 [摘要] 本发明公开了一种通过XMPP实现离线消息推送的方法,在XMPP ...
- uniapp打包app,对接华为厂商,实现unipush离线消息推送
今天终于可以抽出点时间,来记录一下这几天心塞的心情.上周公司派过来一个活,说是使用uniapp制作一个app,同时要实现在线消息推送和离线消息推送,啥话没说就揽了下来.不过说实在的,从来没有开发过ap ...
- 腾讯通服务器删除离线消息,如何撤回RTX离线消息离线文件.docx
如何撤回RTX离线消息离线文件 如何撤回已经发出的离线消息.文件(包括群文件和群消息) 1 消息撤回1.1 如何撤回离线消息.群离线消息当一个用户向另一个用户发送离线消息后,该消息会存储在服务端Off ...
- uniapp unipush接入个推消息推送(各种踩坑记录)安卓+IOS+在线消息+离线消息
uniapp 消息推送功能实现 上周公司要求做一个消息推送的功能,由于现有的电商APP是用uniapp做的,所以优先考虑uniapp自带的unipush消息推送. ios证书导出踩坑 ios推送证书导 ...
- Android集成小米华为推送以及收不到离线消息的坑
华为推送 1.应用被杀后,无法收到透传消息? 应用被杀死后,无法收到透传消息,再手动打开app,也收不到之前发送的消息,像有的第三SDK,应用被杀后,再打开app,还可以收到之前的离线消息,华为推送不 ...
- 微信小程序消息推送自有服务器无法接收到信息,消息推送服务器配置次数用完的解决方式。
问题描述:消息推送自有服务器无法接收到信息,消息推送服务器配置次数用完! 解决方向:自有服务器无法接收信息的排错,消息推送配置的次数用完的解决方式. 适合版本:微信所有版本(2020.4.16) 关于 ...
- ios8中百度推送接收不到
ios8中百度推送接收类型会有所改变: //消息推送注冊 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { ...
- Udesk即时通讯网页插件离线消息推送
作者:张振琦 Udesk即时通讯网页插件提供了,当客户离线后,客服回复的消息可以推送到我们自己的一个服务地址上的功能.这样就给了我们很大的发挥空间,我们可以使用短信.邮件等方式提醒客户上线查看消息,或 ...
- 苏州大学计算机学院保研条件,2018年苏州大学保研推免接收办法
原标题:2018年苏州大学保研推免接收办法 一.接收推免研究生的基本原则 2018年我校接收推免研究生坚持"按需招生.德智体全面衡量.择优录取.保证质量.宁缺毋滥"的原则. 二.接 ...
最新文章
- Ubuntu 10.10 安装配置 Ruby on Rails
- Shell 去掉文本中的空格
- python 查找指定文件_python实现在目录中查找指定文件的方法
- 【ClickHouse 技术系列】- 在 ClickHouse 中处理实时更新
- c盘java文件误删_java获取C盘下的隐藏目录文件名称
- 仅用10个月!中国高中生拿下Kaggle Master,怎么做到的?
- Netty工作笔记0048---Http服务过滤资源
- Google游览器快捷键学习
- 晨曦记账本如何将账本内容导出EXCEL表格
- MATLAB简介与桌面系统
- 鼎捷E10视频教程合集19大模块
- 转圈加载html,web前端入门到实战:纯CSS实现加载转圈样式
- 198.3D商城鞋柜展示特效
- 阿里云Ubuntu 18.04安装图形界面
- 【论文阅读】Efficient Reading of Papers in Science and Technology
- 讲人话科普,Python是个啥?为啥大家都在学?
- protel 99se元件封装名称
- 读兰迪波许《追寻你童年时的梦想》
- c语言事业单位笔试题目及答案,2017年事业单位考试公共基础知识试题及答案
- 两台Sawyer机械臂在rviz中的运动规划