评论

IOS 出现 operateAudio:fail audioInstance is not set 问题的复现及解决方法

关于 operateAudio:fail audioInstance is not set 问题的复现及解决方法

问题产生

在微信更新到最新版本后 IOS系统播放音频会遇到一个错误

operateAudio:fail audioInstance is not set

这是一个偶尔会发生的问题 起初并不知道发生频率和原因

而且大家一致的观点是 这个BUG以前没有 是最近出现的 大概在8月末至今

官方给出的解释是

没有真正创建audio实例,stop是无效的

组件还未创建 因此不能使用 InnerAudioContext 对象的stop 和 play方法 既然这样 那么设置地址的方法应该也是无效的 我们尝试设置地址 发现没有问题 没报错 那么 InnerAudioContext 对象一定是已经被创建成功的

InnerAudioContext 一共只有几个方法 那么问题大概率出现在 设置音频播放源地址上

猜测原因

我发现这个问题往往发生在做有关英语学习的应用上 那么是否和英文字符有关呢?
我自己的应用也是有关英语学习的应用 我尝试对照线索和猜测可能的原因

1.之前没问题 现在有问题 说明可能微信版本更新有关

2.InnerAudioContext 已经创建成功 可能与 InnerAudioContext 设置地址有关

3.如果英语或英文字符有关 可能和字符有关

罪魁祸首和解决方法

是不是和特殊字符有关啊?

试了一下 TMD果然 我的应用中播放单词的时候 有人编辑单词列表 放入了词组!而词组带有空格 那么问题明了了 将单词中的空格进行 URLencode 转换即可

js脚本使用 encodeURIComponent( ) 函数进行转换含有特殊字符的内容

切记不要转换整个URL地址

复现条件是 设置的播放地址中 有特殊字符 未经过URLencode转换 尤其是空格

题外话

以上说的是 operateAudio:fail audioInstance is not set 出现的一种原因 不排除正常报 operateAudio:fail audioInstance is not set 的情况 严谨的讲 也可能有其他原因会造成这个BUG

这个方法虽然现在可以通过代码手动解决 但还是希望官方大大能从更上一层进行兼容 我的应用原来其实是可以播放句子的 也是带有空格的 说明原来没有这个问题 现在微信版本更新了 突然出现这个问题 可能为众多打工人带来困扰 我们的工作已经很饱和了 不要再来蹂躏我们脆弱的心灵了。

轻轻拱手表示感谢 体量我们广大的打工人!

欢迎有做英语学习应用的朋友互相交流。

相关代码和demo:
https://developers.weixin.qq.com/s/FPkZoBmj7mtA

最后一次编辑于  2021-09-26  
点赞 7
收藏
评论

1 个评论

  • 阿白
    阿白
    07-21

    确实有用,感觉除了ASCII字符,其他字符都需要转码

    07-21
    赞同
    回复
登录 后发表内容