uniPush调研
一、基本配置
uniapp manifest.json文件开启unipush
uniapp控制台配置应用推送信息
- uniPush个推配置
- 安卓厂商配置
二、推送表现
ios
1.通知栏展示推送消息
在线(前台) | 在线(后台) | 离线 | |
---|---|---|---|
通知 | ❌ | ✔️ | ✔️ |
透传 | ❌ | ✔️ | ✔️ |
2.在线(包括前台&后台)推送相关事件触发
click 从系统消息中心点击消息启动应用事件
在线(前台) | 在线(后台) | |
---|---|---|
通知 | ✔️ | ✔️ |
透传 | ✔️ | ✔️ |
receive 应用从推送服务器接收到推送消息事件
在线(前台) | 在线(后台) | |
---|---|---|
通知 | ❌ | ❌ |
透传 | ✔️ | ❌ |
android(目前仅vivo可测)
1.通知栏展示推送消息
*安卓厂商目前只有vivo有足够的配置 故离线目前仅测试了vivo
在线(前台) | 在线(后台) | 离线 | |
---|---|---|---|
通知 | ✔️ | ✔️(但多次测试行为不稳定) | ✔️(但多次测试行为不稳定) |
透传 | ❌ | ❌ | ✔️(但多次测试行为不稳定) |
2.在线(包括前台&后台)推送相关事件触发
click 从系统消息中心点击消息启动应用事件
在线(前台) | 在线(后台) | |
---|---|---|
通知 | ✔️ | ✔️ |
透传 | ✔️ | ✔️ |
receive 应用从推送服务器接收到推送消息事件
在线(前台) | 在线(后台) | |
---|---|---|
通知 | ❌ | ❌ |
透传 | ✔️ | ❌ |
综上
无论通知推送还是透传推送 都有一个问题即前台在线情况下 通知栏不会展示推送消息
区别是通知推送不会触发receive事件 透传消息可以触发
解决方案
全部使用透传推送
前台在线情况在push receive事件中通过本地创建消息推送至通知栏中
此处仅无论前台/后台/在线/离线都可以推送至通知栏
【最终可行】
(但此处又引出新问题即角标数量问题 见【三、角标问题】)
在线(前台) | 在线(后台) | 离线 | |
---|---|---|---|
ios | 透传 | 透传并通过receive事件本地推送至通知栏 | 透传 |
android | 透传 | 透传并通过receive事件本地推送至通知栏 | 透传 |
⚠️:回调形参 payload ios为对象 android为json字符串
推送类型
三、角标问题
角标加的问题
服务器推送 | 本地推送 | |
---|---|---|
ios | ✔️(读取auto_badge设置的数字 自动增加相应的数) | ❌ |
android(目前仅vivo可测) | ❌ | ❌ |
ios需要解决的问题 即本地推送角标加的问题
ios解决方案
1.读取当前角标数(本地缓存角标数 或者 通过直接通过iosAPI获取当前角标) 【可行】
2.通过setBadgeNumber更新角标 【可行】
【最终可行】
android解决方案
1.读取当前角标数(本地缓存角标数 目前未找到相关获取角标数的API) 【可行】
2.更新角标数(目前未找到相关API) 【目前行不通】
【最终不可行】
角标减的问题
即操纵角标问题
解决方案
点击通知栏推送打开应用 触发push click是事件 然后操作角标 此处可能衍生出一个新问题 即推送为通知消息 如果消息的类型是链接的化 可能直接去唤起浏览器 并未触发push click 此处透传消息可避免
ios 【最终可行】
android 【最终不可行】
综上
ios可以解决 android待解决
setBadgeNumber兼容说明