
可以把推送理解成服务器主动把一条消息送到用户手机上的 App而不是 App 自己不断去服务器问“有没有新消息”。1. 什么是推送比如你的 App 有一条客服消息客服你好你的订单已经处理完成。正常流程是服务器↓推送服务极光 / 厂商推送↓手机系统↓App↓通知栏 / 锁屏这里最关键的是App 不需要一直运行在前台。2. 什么是离线推送所谓离线通常指App 当前没有处于前台运行状态甚至 App 进程已经被系统杀掉。例如用户正在使用 App↓退出 App↓App 进入后台 / 进程被杀↓服务器发送推送↓手机厂商推送系统收到↓系统通知栏显示消息这就是常说的离线推送。Android 国内手机尤其依赖厂商通道极光├── 华为通道├── 小米通道├── OPPO 通道├── vivo 通道├── 魅族通道└── 荣耀通道现在接入极光 华为/小米/OPPO/vivo/荣耀/魅族本质上就是你的服务器↓极光↓判断用户手机厂商↓对应厂商推送通道↓厂商服务器↓手机系统↓通知栏所以离线推送真正能够在 App 进程不存在时出现核心不是 Flutter也不是 JPush SDK 在后台一直运行而是手机厂商的系统级推送能力。3. App 卸载以后还能收到吗正常情况下不能。例如App 已安装↓注册设备↓服务器获得 Registration ID↓发送离线推送↓手机收到 ✅但是用户卸载 App↓App 的推送注册信息失效/设备不再具备该 App 的接收能力↓服务器继续发送↓无法显示该 App 的通知 ❌所以你之前问的“为什么 App 卸载了就没有离线推送了是不是厂商拦截了”可以理解为不是简单的“厂商把消息拦截了”而是 App 卸载后系统已经没有这个 App 可以接收和展示通知了。4. 一个非常容易混淆的地方“离线推送” ≠ “消息暂存在手机里等 App 打开后再发送”。更准确地说在线服务器 → App离线服务器 → 厂商推送系统 → 手机系统 → 通知卸载服务器 → 推送系统 → ❌ 没有对应 App 可以接收而且不同厂商对离线消息的保留时间、频控、权限、通知分类/Channel、后台限制都有自己的规则。5. 放到你现在的极光项目里你现在的架构可以理解成┌─ 华为 Push├─ 小米 PushKukum Server → 极光 ├─ OPPO Push├─ vivo Push├─ 荣耀 Push└─ 魅族 Push↓手机系统↓通知栏 / 锁屏如果 App 在前台服务器 → 极光 → App↓Flutter 判断当前页面↓客服聊天页面 → 不显示其他页面 → 显示/处理如果 App 在后台或者进程被杀服务器 → 极光 → 厂商通道 → 系统通知6. 整体流程① 厂商开发者平台↓② 创建应用 / 开通推送↓③ 申请消息分类 Channel↓④ 部分厂商申请消息模板 / 分类权益-小米、oppo↓⑤ 把厂商参数配置到极光↓⑥ Flutter / Android 集成厂商 SDK↓⑦ 服务端配置 channel_id / category / template↓⑧ 真机测试离线推送7. 消息分类字段classification0公信每天最多2-5条1私信无限制8. 不通过平台配置①小米有单独申请通道、消息模板流程为小米开发者平台↓创建应用↓开通小米推送↓消息分类管理↓申请 Channel↓申请/配置私信模板分为有参/无参↓获取 AppID / AppKey / AppSecret↓配置到极光↓服务端传 channel_id template_id服务端发送{options: {third_party_channel: {xiaomi: {channel_id: xxx,mi_template_id: xxx,mi_template_param:{\keywords1\:\订单号\,\keywords2\:\状态\}}}}}②OPPO 的流程有单独申请消息模板OPPO开发者平台↓创建应用↓开启推送↓android 代码中增加↓配置极光↓服务端配置 Channel / category / notify_level服务端发送oppo: {category: ORDER,//写死oppo官网分类notify_level: 2 }③vivo有单独申请渠道分类需要固定channel_idvivo开发者平台↓创建应用↓申请推送服务↓获取参数↓配置极光↓消息分类 / category↓服务端配置后台发送vivo: {distribution: ospush,//写死category: ORDER//官网分类}④华为华为开发者平台↓创建应用/项目↓开通 Push↓获取 AppID / AppSecret / 服务账号密钥↓配置极光↓申请自分类权益如果需要↓服务端配置分类后台发送huawei: {importance: NORMAL,//官网固定分类category: WORK }//官网固定分类⑤荣耀荣耀开发者平台↓创建应用↓开通推送↓获取参数↓配置极光↓消息分类/importance↓服务端配置后台发送honor: {importance: LOW //官网分类}⑥魅族魅族开发者平台↓创建应用↓获取参数↓配置极光↓集成 SDK↓测试后台发送meizu: {**}