由于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;
}
评论(0)
暂无评论