Expo React Native:在Android上怎么让通知声音持续播放30秒?
我正在开发一个使用Expo(托管工作流)的React Native应用,需要实现一个紧急警报功能。
需求是:当收到推送通知时,声音大约持续30秒,即使应用在后台或被终止也应播放。
目前,我在使用 expo-notifications 和一个自定义通知声音。不过,我发现:
- 声音只播放几秒钟(大约3–5秒)
- 没有持续到音频文件的完整时长
- 在不同的Android设备上表现不同
我想了解的是:
- 是否有可能在Android上使用Expo(托管工作流)实现大约30秒的通知声音?
- 如果不能,Android或 Expo有哪些限制?
- 是否有实现更长或连续警报声音的变通方法(用于应急场景)?
附加背景信息:
- 应用是用Expo构建的(托管型,不是弹出式)
- 目标平台:Android为主,iOS可选
- 用例类似于应急警报或闹钟
任何指导或推荐的做法都将不胜感激。
解决方案
我觉得 expo-notifications 可能不足以覆盖你的用例,因为据我所知它使用 NotificationCompat API,通过链接https://developer.android.com/develop/ui/views/notifications/build-notification,该API存在以下限制:
注:从Android 8.1(API level 27)开始,应用不能让通知声音每秒大于一次。如果你的应用在同一秒内发布了多条通知,它们都会按预期显示,但每秒只有第一条通知会发出声音。
我更倾向于研究使用 AlarmManager API,链接https://developer.android.com/develop/background-work/services/alarms。有一个 expo包 可用,但我不能保证它的质量。你最终可能需要自行编写原生绑定。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。