关于个推 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 接收不到离线消息问题相关推荐

  1. 一种通过xmpp实现离线消息推送的方法及系统

    公开号 : CN 104243271 A 专利申请号 : CN 201310230953 申请人 : 深圳中兴网信科技有限公司 [摘要] 本发明公开了一种通过XMPP实现离线消息推送的方法,在XMPP ...

  2. uniapp打包app,对接华为厂商,实现unipush离线消息推送

    今天终于可以抽出点时间,来记录一下这几天心塞的心情.上周公司派过来一个活,说是使用uniapp制作一个app,同时要实现在线消息推送和离线消息推送,啥话没说就揽了下来.不过说实在的,从来没有开发过ap ...

  3. 腾讯通服务器删除离线消息,如何撤回RTX离线消息离线文件.docx

    如何撤回RTX离线消息离线文件 如何撤回已经发出的离线消息.文件(包括群文件和群消息) 1 消息撤回1.1 如何撤回离线消息.群离线消息当一个用户向另一个用户发送离线消息后,该消息会存储在服务端Off ...

  4. uniapp unipush接入个推消息推送(各种踩坑记录)安卓+IOS+在线消息+离线消息

    uniapp 消息推送功能实现 上周公司要求做一个消息推送的功能,由于现有的电商APP是用uniapp做的,所以优先考虑uniapp自带的unipush消息推送. ios证书导出踩坑 ios推送证书导 ...

  5. Android集成小米华为推送以及收不到离线消息的坑

    华为推送 1.应用被杀后,无法收到透传消息? 应用被杀死后,无法收到透传消息,再手动打开app,也收不到之前发送的消息,像有的第三SDK,应用被杀后,再打开app,还可以收到之前的离线消息,华为推送不 ...

  6. 微信小程序消息推送自有服务器无法接收到信息,消息推送服务器配置次数用完的解决方式。

    问题描述:消息推送自有服务器无法接收到信息,消息推送服务器配置次数用完! 解决方向:自有服务器无法接收信息的排错,消息推送配置的次数用完的解决方式. 适合版本:微信所有版本(2020.4.16) 关于 ...

  7. ios8中百度推送接收不到

    ios8中百度推送接收类型会有所改变: //消息推送注冊 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { ...

  8. Udesk即时通讯网页插件离线消息推送

    作者:张振琦 Udesk即时通讯网页插件提供了,当客户离线后,客服回复的消息可以推送到我们自己的一个服务地址上的功能.这样就给了我们很大的发挥空间,我们可以使用短信.邮件等方式提醒客户上线查看消息,或 ...

  9. 苏州大学计算机学院保研条件,2018年苏州大学保研推免接收办法

    原标题:2018年苏州大学保研推免接收办法 一.接收推免研究生的基本原则 2018年我校接收推免研究生坚持"按需招生.德智体全面衡量.择优录取.保证质量.宁缺毋滥"的原则. 二.接 ...

最新文章

  1. Ubuntu 10.10 安装配置 Ruby on Rails
  2. Shell 去掉文本中的空格
  3. python 查找指定文件_python实现在目录中查找指定文件的方法
  4. 【ClickHouse 技术系列】- 在 ClickHouse 中处理实时更新
  5. c盘java文件误删_java获取C盘下的隐藏目录文件名称
  6. 仅用10个月!中国高中生拿下Kaggle Master,怎么做到的?
  7. Netty工作笔记0048---Http服务过滤资源
  8. Google游览器快捷键学习
  9. 晨曦记账本如何将账本内容导出EXCEL表格
  10. MATLAB简介与桌面系统
  11. 鼎捷E10视频教程合集19大模块
  12. 转圈加载html,web前端入门到实战:纯CSS实现加载转圈样式
  13. 198.3D商城鞋柜展示特效
  14. 阿里云Ubuntu 18.04安装图形界面
  15. 【论文阅读】Efficient Reading of Papers in Science and Technology
  16. 讲人话科普,Python是个啥?为啥大家都在学?
  17. protel 99se元件封装名称
  18. 读兰迪波许《追寻你童年时的梦想》
  19. c语言事业单位笔试题目及答案,2017年事业单位考试公共基础知识试题及答案
  20. 两台Sawyer机械臂在rviz中的运动规划

热门文章

  1. php目录列表程序,目录列表程序——h5ai
  2. 机器学习 Sparsity and Some Basics of L1 Regularization
  3. 关于java文档注释添加url链接
  4. Allegro的模块化设计
  5. Fiddler 4监听微信浏览器数据
  6. 【记录】windows中edge常用快捷键
  7. BPM(业务流程管理)和管理系统对比
  8. Ubuntu安装python3.10.6
  9. 没有最低只有更低,暴风50吋AI电视1999元预约开启
  10. 智冠尝试包月免费并行 《新绝代双骄》4日实施双轨