重点: 这个解决方法仍然最少还是需要点击一次才可以, 完全不点击就自动播放的方法暂时还是没有找到
1. 背景
我要实现的功能是语音导航, 需要将导航的信息通过文字转换成语音, 然后播放出来. 现在就差播放出来这一步.
由于使用的是web-view, 所以无法使用微信原生提供的wx.createInnerAudioContext方法(jweixin-1.3.2.js 中没有 wx.createInnerAudioContext方法), 也看了下web-view中支持的其他音频播放JSSDK, 都跟需求不符合.
所以就想到使用html5中的audio标签。
2. 问题描述
在使用audio标签后发现,ios系统中,无法播放语音,找了很久只是在网上找到的说法是:ios中的audio没有自动播放功能,必须要有用户交互才可以播放。(从安全角度,以及流量角度看,这也是可以理解的)
但是,对于我目前要实现的功能,没办法不停的让用户去点击操作。
3. 解决思路
在网上找了各种解决方法,都是播放一次就行了, 但是基本也是要监听了点击事件的。所以就考虑看,能不能:不允许自动播放嘛...我就试试点击"开始导航"按钮的时候, 播放一段空的语音, 然后再需要导航的地方, 用代码去控制播放要的语音...
结果一试,还真可以。(就怕以后IOS更新后,把这个地方给堵住了,目前我IOS版本是11.4.1,感觉是个漏洞)
4. 测试代码实现
a. 小程序加入web-view, 并将src地址指测试页面: