uniapp 小程序生产环境保存视频到相册失败,体验版却正常是怎么回事?
在使用uniapp开发小程序时遇到一个奇怪的问题:在体验版可以正常调用API将视频保存到相册,但在生产环境却总是失败。代码和权限配置都是一样的,真机调试也没报错。有人遇到过类似情况吗?可能是哪里配置出了问题?
2 回复
这可能是因为小程序生产环境的权限配置或安全策略更严格。以下是常见原因和解决方案:
1. 权限配置问题
- 检查
app.json中是否声明相册权限:
{
"permission": {
"scope.writePhotosAlbum": {
"desc": "需要您的授权才能保存视频到相册"
}
}
}
2. 动态权限申请 保存前需调用权限申请(用户可能在生产环境拒绝了权限):
// 检查并申请权限
uni.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
this.saveVideo();
},
fail: () => {
uni.showModal({
content: '需要相册权限才能保存',
success: (res) => {
if (res.confirm) {
uni.openSetting(); // 引导用户开启权限
}
}
});
}
});
// 保存视频方法
saveVideo() {
uni.downloadFile({
url: 'https://example.com/video.mp4',
success: (res) => {
uni.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success: () => uni.showToast({ title: '保存成功' }),
fail: (err) => console.log('保存失败', err)
});
}
});
}
3. 域名校验
- 确保视频资源域名已在微信小程序后台的
downloadFile合法域名列表中配置 - 生产环境必须使用HTTPS域名
4. 文件格式限制
- 检查视频格式是否符合要求(支持MP4、MOV等常见格式)
- 文件大小建议不超过20MB
5. 真机调试
- 使用微信开发者工具的「真机调试」功能,通过vConsole查看具体错误信息
建议按以下步骤排查:
- 检查小程序后台域名配置
- 真机测试权限申请流程
- 查看vConsole中的详细报错
- 确认视频文件可正常下载
通常生产环境问题多出现在权限申请流程或域名配置上。


