APP消息推送是否进入消息中心和click、receive事件分析

前端时间研究APP消息推送的机制,由于机型、版本的碎片化,消息推送的机制不太好理解,所以总结下,放在博文里以备后续查阅。

安卓Android系统的消息推送:

  安卓
推送方式应用状态类型消息中心触发receive触发click
远程推送应用在前台1、普通消息进入不触发不触发
2、透传消息且符合格式进入不触发触发
3、透传消息且不符合格式不进入触发不触发
应用不在前台进程
存活
1、普通消息进入不触发不触发
2、透传消息且符合格式进入不触发触发
3、透传消息且不符合格式不进入不触发不触发
本地推送应用在前台  进入不触发不触发

 

苹果iOS系统的消息推送:

  iOS
推送方式应用状态消息中心触发receive触发click
远程推送
APNs
应用在前台不进入触发不触发
应用不在前台进入不触发触发
本地推送应用在前台进入触发不触发

 

Android:

触发click事件: 发送透传数据并且格式为标准格式。

触发receive事件:发送透传数据且格式为非标准格式且应用在活动。(消息栏不会有提示!)

 

iOS:

在线:只能响应receive,但消息中心无消息;

不在线:消息中心有消息,且响应click事件.

转自:http://www.piaoyi.org/mobile-app/APP-click-receive-push.html

转载于:https://www.cnblogs.com/douyage/p/7723212.html

### 问题分析 当应用处于后台或关闭状态,`uni-push` 推送通知的接收可能会受到限制。这是因为 iOS Android 系统对后台运行的应用有不同的限制策略。以下是针对 `uni-push` 在后台或关闭状态下保持推送通知活跃的配置方案。 --- ### 配置方案 #### 1. **iOS 配置** 在 iOS 平台上,推送通知需要依赖苹果的 APNs(Apple Push Notification Service)。以下为具体配置步骤: - **导出证书并配置到后台** 从苹果开发者官网导出 APNs 的推送证书,并将其上传到 `uni-push` 后台的“厂商推送设置”中[^2]。 - **确保权限配置正确** 在 `manifest.json` 文件中为 iOS 设置推送通知权限: ```json { "app-plus": { "distribute": { "ios": { "permissions": [ "ios.permission.NOTIFICATIONS" ] } } } } ``` - **离线推送支持** 配置完成后,即使应用关闭,也可以通过 APNs 实现离线推送[^2]。 --- #### 2. **Android 配置** 在 Android 平台上,推送通知主要依赖 Google Firebase Cloud Messaging (FCM) 或华为推送服务等厂商通道。以下是具体配置步骤: - **集成厂商推送服务** 如果使用 FCM,需在 `manifest.json` 文件中添加以下权限配置: ```json { "app-plus": { "distribute": { "android": { "permissions": [ "android.permission.VIBRATE", "android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE" ] } } } } ``` - **保持应用活跃** 在 Android 系统中,可以通过设置 `WakeLock` 或 `JobScheduler` 来确保应用在后台保持活跃状态。此外,`uni-push` 自带的推送服务会自动处理部分后台唤醒逻辑[^3]。 --- #### 3. **通用代码实现** 无论是在 Android 还是 iOS 上,都需要在 `App.vue` 中监听推送事件并显示本地通知。以下是示例代码: ```javascript // App.vue 中的 onLaunch 方法 export default { onLaunch() { // 监听消息接收事件 plus.push.addEventListener("receive", function (msg) { plus.push.createMessage(msg.content, msg.payload, { title: msg.title }); }); // 监听点击事件 plus.push.addEventListener("click", (payload) => { console.log("点击通知栏消息:", payload); uni.reLaunch({ url: `/pages/index/index?index=2` }); }); } }; ``` --- #### 4. **测试与验证** - **后端服务测试** 确保后端服务能够正常发送推送消息,并通过 `/receive` 接口获取消息[^3]。 - **前端调试** 在应用关闭或后台运行,测试是否能接收到推送通知。如果无法接收,请检查以下内容: - iOS 是否正确配置了 APNs 证书。 - Android 是否正确配置了厂商推送服务。 - 应用是否请求了必要的权限。 --- ### 注意事项 - **iOS 设备限制** iOS 系统对后台运行的应用有严格限制,因此推送通知必须依赖 APNs。即使应用关闭,也能通过 APNs 接收消息[^2]。 - **Android 系统优化** 某些 Android 手机(如小米、华为)会对后台应用进行限制,可能需要用户手动将应用加入“白名单”以确保推送功能正常工作[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值