uniapp 小程序生产环境保存视频到相册失败,体验版却正常是怎么回事?

在使用uniapp开发小程序时遇到一个奇怪的问题:在体验版可以正常调用API将视频保存到相册,但在生产环境却总是失败。代码和权限配置都是一样的,真机调试也没报错。有人遇到过类似情况吗?可能是哪里配置出了问题?

2 回复

可能是权限问题。生产环境需用户授权相册权限,而体验版默认有权限。检查代码中是否在保存前调用uni.authorize获取权限,或引导用户手动开启相册权限。


这可能是因为小程序生产环境的权限配置或安全策略更严格。以下是常见原因和解决方案:

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查看具体错误信息

建议按以下步骤排查:

  1. 检查小程序后台域名配置
  2. 真机测试权限申请流程
  3. 查看vConsole中的详细报错
  4. 确认视频文件可正常下载

通常生产环境问题多出现在权限申请流程或域名配置上。

回到顶部