uni-app 分享图片api失效

uni-app 分享图片api失效

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
# 操作步骤:
* uni.canvasToTempFilePath返回临时路径,调用uni.share分享图片到朋友圈

# 预期结果:
* 正常分享

# 实际结果:
* 调不起来微信

# bug描述:
使用uni.canvasToTempFilePath返回图片临时路径,分享图片到微信app上无任何反应,但在控制台能看到同时触发了app.vue里的onHide和onShow周期,其他啥错误也没有,fail回调也不执行
在没更新hx之前,vue下是可以分享到微信的
哦对了,使用网络url是没问题的,
这个vue分享页面好久没动了, 都不敢升级了。。。

更多关于uni-app 分享图片api失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

我看到3.1.4一条关于分享的更新: Android平台 修复 微信分享本地图片在部分 Android11 设备可能失败的Bug 详情 …我严重怀疑又是更新导致的

更多关于uni-app 分享图片api失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


云打包

回复 DCloud_Android_ST: 传统打包吗? 我用的就是传统打包,是自定义基座

回复 choin: 嗯 什么时候打的包,重新打一个正式包试试看看

回复 DCloud_Android_ST: 3.1.4刚升级完我就打包了,我再试试打包

可以了。。。

回复 DCloud_Android_ST: 小窗布局错乱什么时候能解决呢

顶顶顶顶顶顶顶顶顶顶

顶顶顶顶顶顶顶顶顶顶

没有一样问题的吗?

这个问题通常是由于uni.canvasToTempFilePath生成的临时路径在分享时失效导致的。从你的描述来看,有几个关键点:

  1. 网络URL分享正常,说明分享功能本身没问题
  2. 临时路径分享失败,且触发了onHide和onShow周期
  3. 之前版本正常,升级后出现问题

解决方案:

方案一:使用base64分享 将canvas转换为base64格式进行分享:

uni.canvasToTempFilePath({
  canvasId: 'yourCanvasId',
  success: (res) => {
    const base64 = wx.getFileSystemManager().readFileSync(res.tempFilePath, 'base64')
    uni.share({
      provider: 'weixin',
      scene: 'WXSenceTimeline',
      type: 'image',
      image: `data:image/png;base64,${base64}`,
      success: function (res) {
        console.log("分享成功");
      }
    });
  }
});

方案二:确保路径有效性 在分享前验证临时文件是否存在:

uni.canvasToTempFilePath({
  canvasId: 'yourCanvasId',
  success: (res) => {
    const fs = wx.getFileSystemManager();
    try {
      fs.accessSync(res.tempFilePath);
      uni.share({
        provider: 'weixin',
        scene: 'WXSenceTimeline',
        type: 'image',
        image: res.tempFilePath,
        success: function (res) {
          console.log("分享成功");
        }
      });
    } catch (e) {
      console.log('文件不存在');
    }
  }
});
回到顶部