十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
又拍云的 iOS 短视频 SDK 用下来效果还不错的。 这个短视频 SDK 包含短视频拍摄、编辑、合成部分,包含断点录制、分段回删、美颜、滤镜、贴纸、视频剪辑、视频压缩、本地转码在内的 30 多种功能。 支持自定义界面和二次开发。
网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为集装箱等企业提供专业服务。
近期项目中有个需求就是要实现类似微信或者支付宝的收款时的语音播报功能,于是笔者就开始了漫长的踩坑之路。
刚开始讨论实现方案时,安卓的小伙伴说可以使用WebSocket + 讯飞语音在线合成实现。于是最初的几天笔者自己也一直在这条路上走了很久,基本功能都已经实现了,项目在前台的时候,基本没问题。但是项目一进入后台大概半分钟的时间,就无法播报了。原因是iOS项目如果不做任何处理的话,在进入后台大概30s之后,程序就会进入类似休眠的状态,然后就不会再进行任何操作了
跟安卓的同事讨论之后,发现安卓有方法可以让程序一直在后台处于活跃状态,于是笔者也开始找寻保持项目后台运行的方法,大概有两种
在这里我们并没有发现,程序在后台收到推送时,作相应处理的方法,哪到底能不能收到推送后就进行处理呢?
iOS 10 之后 iOS推出了Notification Service Extension,我们可以在收到推送之后,通过这个Extension 我们可以有三十秒的时间来对这个推送进行处理
完成之后长这样
然后我们配置一下NotificationService
然后我们看下NotificationService.swift文件
在完成上述操作之后,再次收到推送的话,就会走NotificationService的逻辑了,可以打断点或者Log测试一下
需要注意的是 在推送的内容中 必须配置mutable-content字段,结构大致如下
做完上边的操作之后,我们可以知道什么时候去播报语音了,但是语音又要怎么去播报呢?
笔者这边也是试过几个方案,下边一一说来
笔者刚开始使用讯飞发现不行,然后又测试了系统自带的AVSpeech,发现也不好用,查资料才知道,苹果在近期的版本中,停用的在NotificationService中播放语音的功能,之前的某个版本应该可以这么操作。好吧,此方案Pass
既然不让我播,那我存起来总可以了吧,测试发现讯飞在线生成是可以的,也可以存到本地,但。。。是,UNMutableNotificationContent的sound好像只支持提前添加到项目中的文件,并不支持立即生成之后存到本地,然后再设置的功能。。。
笔者在项目中预先生成的文件如下(语音包通过百度语音开放平台在线生成 百度语音在下生成(拉到中间就有了) )
比如说我要播放“支付宝到账100元”,我就会发放多个通知,依次播放wx-pre,1,bai,yuan这几个语音,连贯起来就能达到要求
笔者能力有限,暂时想到的方法就是这个,有好的方法可以多多分享,沟通
两种处理方式
1、将获取到的音频文件通过base64加密直接通过xmpp的消息体发送过去,然后解码;
2、通过http请求的方式将音频文件上传到服务器,然后将音频文件的下载地址通过xmpp消息体发送过去,另外一个客户端下载。
音频文件建议转码为amr,这种格式的音频文件比较小。
1、首先右键点击右下角小喇叭图标-录音设备,进入声音设置菜单, 2、右键点击“Internal Mic(内置麦克风)”选项,点击“设置为默认通信设备”, 3、选好后,点击“通信”选项,把“当WINDOWS检测到通信活动时”设置为“不执行任何操作”,然后应用确定即可。 如果进行上述设置后机器的问题依旧,可以尝试使用其他的聊天软件或录音软件看看机器是否可以正常使用内置麦克风: 如果其它的软件可以正常使用,那么应该是所使用的聊天软件方面的问题导致的了,可以更换这个聊天软件的版本重新安装看看是否可以解决这个问题;