React Native Expo配送应用后台及关闭状态新订单提醒功能实现求助
React Native Expo 配送员应用新订单提醒实现方案
核心逻辑说明
App 处于后台或被关闭时,前端代码无法持续运行,因此不要在前端做接口轮询,所有触发逻辑由后端完成,依赖系统级推送服务实现全场景提醒。你现有的布尔值判断接口无需修改,直接给后端调用即可。
具体实现步骤
1. 依赖安装
首先安装需要的官方库:npx expo install expo-notifications expo-av expo-haptics expo-task-manager expo-background-fetch
2. 前端权限与推送配置
- App 启动时优先申请三类权限:通知权限、振动权限、后台刷新权限,安卓端需要额外申请高优先级通知渠道权限,iOS 端需要在 Xcode 配置中开启「后台通知」「后台刷新」能力。
- 启动后获取设备的 Expo Push Token,上传到你的后端和对应配送员账号绑定,后续后端发推送时用该 Token 定位设备。
- 安卓端单独配置高优先级通知渠道,避免高版本安卓系统拦截提醒:
if (Platform.OS === 'android') { await Notifications.setNotificationChannelAsync('new-order', { name: '新订单提醒', importance: Notifications.AndroidImportance.MAX, vibrationPattern: [1000, 500, 1000, 500, 1000], sound: 'order_alert.wav', enableVibration: true, }); }
3. 分场景提醒逻辑处理
- 前台运行状态:收到推送后直接调用
expo-haptics触发振动,调用expo-av播放预设的提示音,无需走系统通知栏,响应速度更快。 - 后台运行状态:系统自动展示通知栏通知,你只需在推送 payload 中配置
sound: "default"(或自定义提示音)、振动序列参数,系统收到推送后会自动触发响铃和振动。 - 已关闭状态:只要用户没有禁止 App 的推送权限,系统会和后台状态一样自动处理推送,弹出通知、触发振动和响铃。
4. 兜底逻辑配置
如果担心推送出现漏发,可以用 expo-task-manager + expo-background-fetch 配置后台轮询任务,设置15-60秒的间隔调用你现有的布尔接口,当接口返回 true 时本地触发提醒,该逻辑仅覆盖 App 后台运行的场景,作为推送的兜底补充。
5. 后端逻辑调整
后端定时轮询你现有的布尔值接口,当接口返回 true 时,调用 Expo 推送发送接口,传入对应用户的 Push Token、通知标题内容、声音振动参数即可,原有业务接口无需修改。
内容的提问来源于stack exchange,提问作者Tejas Sanjay Chaudhari
相关产品推荐
相关产品推荐

