iOS App处于后台/被杀死的状态仍可进行语言播报的实现 (适配iOS12.1 ,iOS15的本地通知功能)

本文介绍了在iOS12.1及更高版本中,如何利用Service Extension和本地通知实现在App后台或被杀死状态下的语言播报。通过设置`mutable-content`,在Notification Service Extension中处理消息,合成或下载语音文件存放在AppGroups的Library/Sounds,然后自定义通知声音实现播报。文中提供了详细步骤和两种实现方案:音频文件合并和语音合成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

背景:iOS12.1 之后 AVAudioPlayer 无法在后台播放语音。

在杀死APP的情况下仍可进行语言播报的实现方案:iOS 10新增的Service Extension。

不使用Voip 推送的原因:iOS13中(XCode11编译)苹果不再允许PushKit应用在非voip电话的场景上,如果需要使用PushKit的话则需要接入CallKit的接口,导致收到客户端收到Voip Push时会拉起一个接打电话的全屏界面。

在iOS10中推出的Notification Service Extension(NSE),当apns的payload上带上"mutable-content"的值为1时,就会进入NSE的代码中。与Voip方不同之处是,NSE不能唤醒主应用,也不能访问主应用的文件空间,只能在Extension进程中处理相应的逻辑。在NSE中,开发者可以更改通知的内容,利用离线合成或者从后台下载的方式,生成需要播报的内容,通过自定义通知铃声的方式,达到语音播报提醒的目的

将合成的/下载的语音音频文件存储到AppGroups下的Library/Sounds文件夹中。

- (NSString 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java、iOS、Vue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值