UniPush消息推送实战:从踩坑到精通的完整指南
第一次接触UniPush消息推送时,我像个迷路的孩子站在十字路口——安卓和iOS表现各异,在线和离线状态处理方式不同,各种证书配置让人眼花缭乱。经过两个月的实战和无数次深夜调试,我终于摸清了让所有消息"乖乖听话"的秘诀。这篇文章将带你避开我踩过的所有坑,直抵问题核心。
1. 环境准备:证书与配置的魔鬼细节
消息推送的第一步不是写代码,而是准备各种"通行证"。iOS的证书迷宫和安卓的厂商配置是大多数开发者遇到的第一个拦路虎。
1.1 iOS证书:钥匙串里的秘密
iOS推送证书的申请是个精细活,需要特别注意:
- 证书类型选择:必须选择"Apple Push Notification service SSL"类型
- 开发与生产环境:需要分别申请Development和Production两种证书
- 导出格式:最终需要.p12格式的证书文件
bash复制# 查看证书信息的命令(Mac钥匙串导出后验证)
openssl pkcs12 -info -in apns.p12 -nodes
常见错误包括证书类型选错、Bundle ID不匹配、证书过期等。一个实用技巧是使用苹果开发者账号中的"Certificates, Identifiers & Profiles"页面反复核对所有信息。
1.2 安卓厂商通道:必须跨越的门槛
与iOS不同,安卓的离线推送必须配置厂商通道。主流厂商包括:
| 厂商 | 申请地址 | 特殊要求 |
|---|---|---|
| 华为 | 华为开发者联盟 | 需要上架应用市场 |
| 小米 | 小米开放平台 | 需要SHA256证书指纹 |
| OPPO | OPPO开放平台 | 需要包名备案 |
| vivo | vivo开发者平台 | 需要企业实名认证 |
提示:厂商通道审核通常需要1-3个工作日,务必提前申请。测试阶段可以先用在线推送功能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. UniPush核心配置:manifest.json的隐藏选项
UniApp项目的manifest.json文件是配置推送功能的核心,但90%的开发者只做了基础配置,忽略了关键细节。
2.1 基础模块配置
json复制{
"app-plus": {
"modules": {
"push": {
"unipush": {
"enable": true
}
}
}
}
}
这个配置只是开始,还需要在DCloud开发者中心完成:
- 应用信息绑定
- 包名一致性检查
- 签名证书上传(安卓)
- 推送证书上传(iOS)
