iOS 语音播报解决方案(实现支付宝语音收款功能)

本文详述了在iOS 10及更高版本中,利用Notification Service Extension实现语音播报,特别是解决多条通知串行播报中断问题的方法。通过创建通知扩展类、添加语音播报逻辑,以及设置后台播放支持,确保即使在应用被杀死的情况下也能播报语音,如支付宝语音收款功能。文章还讨论了iOS 10以下系统的实现方案和注意事项。

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

iOS10 语音播报填坑详解(解决串行播报中断问题)

在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报。语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝、微信、收钱吧等的收款语音提示一样。在iOS 10 之前,苹果没有提供通知扩展类的时候,如果想要实现杀进程也可以正常播报语音消息很难,从iOS 10添加了这一个通知扩展类后,实现杀进程播报语音就相对简单很多了。

我们先来看一个陌生的Tagget
  • Notification Service Extension

这个Notification Service Extension 就是苹果在 iOS 10的新系统中为我们添加的新特性,这个新特性就能帮助我们用来解决杀死进程正常语音播报
在这里插入图片描述

苹果官方解释:UNNotificationServiceExtension

详细步骤
  • 创建一个通知扩展类
  • 添加语音播报逻辑代码
  • 设置支持后台播放
  • iOS 10 以下系统如何实现串行播报
创建一个通知扩展类

首先我点击 Xcode 的 File -> New -> Target -> Notification Service Extension,新建一个通知扩展类Target。
在这里插入图片描述
在这里插入图片描述

新建完后,我们的工程会多出一个文件夹,这里示例Demo的Target命名为 NotificationSE,文件夹中有NotificationService.h NotificationService.m 文件,这两个文件就是后面我们要用到的通知扩展类文件
在这里插入图片描述

在没有对NotificationService做任何修改时,我们先来预览下 .m 文件中都有哪些内容
在这里插入图片描述

从上面的截图,我们可以看到,.m 文件其实很简单,就 2 个函数,其实后面我们对这个文件做逻辑处理,也是很简单的。

添加语音播报逻辑代码

注意,这里我们使用的语音合成和播报组件也是苹果官方提供的组件,AVSpeechSynthesizer,AVSpeechSynthesisVoice,AVSpeechUtterance
我们先来看下一段语音播放代码片段:

AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc] init];
    AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];
    AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:@"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值