由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。
中文音频Url在安卓和window上都能正常播放,在iOS上会出现错误,APP崩溃。
audioplayers/WrappedMediaPlayer.swift:224: Fatal error: Unexpectedly found nil while unwrapping an Optional value
之前使用PHP转码,但是如果其中含有已转义的%等符号时,又会再次转义而导致错误。
现在改为在APP端进行转码。在传入的URL先进行正则判断是否含有中文,如果含中文,进行URL编码。
///判断url是否含有中文,有则进行urlencode bool isChinese(String value) { return RegExp(r"[\u4e00-\u9fa5]").hasMatch(value); } String chineseUrlEncode(String inputUrl) { String outputUrl = inputUrl; bool boolIsChinese = isChinese(inputUrl); if (Global.isIOS && boolIsChinese) { outputUrl = Uri.encodeFull(inputUrl); debugPrint("url 编码 歌曲URL 2 -> $outputUrl"); } else { debugPrint("无需编码 2 -> $outputUrl"); } return outputUrl; }