uni.previewimage 预览图片遇见oss在线链接时,ios端会显示黑屏,android和H5可以正常预览。
uni.previewImage({
urls: images,
success(success) {
console.log("🚀 ~ success ~ success:", success);
},
fail(err) {
console.log("🚀 ~ uni.previewImage ~ err:", err);
},
});
但是fail里面并没有报错,相反走的success,这里如果有大佬知道是什么原因可以说一下。 我测试了一下获取的图片临时路径ios可以预览,于是
let isIos = false;
uni.getSystemInfo({
success: event => {
isIos = (event.osName === "ios" || event.system.indexOf("iOS" > -1)) && event.uniPlatform != "web";
},
});
/**
* 图片预览
* @param {Array} imgList 预览图片数组
*/
export const imgPreview = async imgList => {
if (!imgList?.length) return;
if (isIos) {
let list = [];
for (let i = 0, len = imgList.length; i < len; i++) {
try {
const [_, res] = await uni.downloadFile({ url: imgList[i] });
if (res.statusCode === 200) {
list.push(res.tempFilePath);
}
} catch (error) {
console.log("🚀 ~ imgPreview ~ error:", error);
}
}
uni.previewImage({
indicator: "number",
loop: true,
urls: list,
});
} else {
uni.previewImage({
indicator: "number",
loop: true,
urls: imgList,
});
}
};
那就先判断是不是ios,如果是的话,用 uni.downloadFile 将oss在线链接下载下来(官方注:客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径,文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 uni.saveFile 才能在应用下次启动时访问得到), 虽然不懂,但还是在懵逼中解决了ios端预览图片遇见oss在线链接时会显示黑屏的问题。