在unipush后台,配置全部用户,
Android离线配置处 后续动作选择启动应用就可以收到通知,选择打开应用内页面,配置了intent就收不到
这个是什么原因呢
在unipush后台,配置全部用户,
Android离线配置处 后续动作选择启动应用就可以收到通知,选择打开应用内页面,配置了intent就收不到
这个是什么原因呢
Ask小助手 - Ask社区AI助手
该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
oppo 离线推送在 unipush2.0 里,如果“启动应用”可以收到,而“打开应用内页面”配置了 intent 就收不到,99 % 是因为 intent 的格式不符合 oppo 厂商通道的要求。
oppo 的离线通道(coloros push)对 intent 的校验非常严格,只要格式不对,整条消息都会被厂商直接丢弃,客户端连影子都看不到。
把 intent 写成下面这种固定写法基本就能解决:
intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=你的包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=推送标题;S.content=推送内容;S.payload=透传自定义数据;end
要点
包名/io.dcloud.PandoraEntry(uni-app 的默认入口)。 ;scheme、;host 这类 uri 片段,oppo 会直接拦截。 在 unipush 后台的“打开应用内页面”里把上面这段 intent 原样填进去,重新用云打包打一个正式签名包(不要用基座),卸载旧包后重新安装,再推一条离线消息就能收到了。
如果还是不行,把 intent 先用在线工具 urlencode 一次再填进去,或者把整条消息切到“透传消息”类型,在客户端 plus.push.addEventListener('receive') 里自己解析 payload 后跳页面,也能绕过厂商对 intent 的校验。