微信小游戏分享图片问题

这是我的实现方案:

wx.shareAppMessage({
            title: '???????????????',
            query: `roomId=${roomId}`,
            imageUrl: cc.url.raw('resources/pic/sp_share.png'),
            success: () => {
                this.target.onShareSuccess();
            },
            fail: () => {
                this.target.onShareFail();
            }
        });

然后share的图片路径build-templates\wechatgame\res\raw-assets\resources\pic\sp_share.png
这么做的目的有两点:

  1. 放到resource目录下,可以通过路径访问到
  2. 放到build-templates里面是为了避免对资源做md5的时候把图片名字给改了,导致获取不到

关于build-templates出门左转—>>>http://docs.cocos.com/creator/manual/zh/publish/custom-project-build-template.html?h=build-templa

1赞

我图片是放在
build-templates\wechatgame\wx-assets\share.png

代码里面直接用 wx-assets\share.png

居然不显示:joy:

刚好遇见这个坑 要自定义发布模板 见http://docs.cocos.com/creator/manual/zh/publish/custom-project-build-template.html 里面按照平台路径划分子目录,然后里面的所有文件在构建结束后都会自动按照对应的目录结构复制到构建出的工程里。把图片存到自定义发布的模板中,然后构建时会自动生成到微信中
wx.shareAppMessage({
title: “不怕,就来PK!”,
imageUrl: ‘res/raw-assets/resources/pic/shareImg.jpg’,
success(res){
console.log(“转发成功!!!”)
},
fail(res){
console.log(“转发失败!!!”)
}
})
imageUrl的路径到wechatgame/res/raw-assets/resources/pic 里面

:sweat_smile:路径可以转的这个路径就可以用了

4赞

mark

为什呢我照着你的方法不把文件res放到服务器上可以,让后把res放到服务器上就获取不到了啊

然后你怎么解决的?

我的使用方式可以,本地和远程文件一样使用

getURL方法的实现,本地文件不存在时使用远程文件

1赞

看回复:joy:

您这个分享的图片是放在什么目录下的?我用js写的,试了下不好使:joy:

就工程目录下吧?不是在build-templates目录下的吧?我在本地和远程测试都没有显示成功。

JS的话,应该这样就行了吧。

1赞

本地放在 “assets/resources/share/” 目录下面
远程服务器目录是传的整个res

这是转发测试

好的,解决了,终于发现问题了少添加了一个扩展名,拼接url的地方,我原来写的是’resources/share/shareicon’,这里必须得写上扩展名才可以,修改后’resources/share/shareicon.png’就可以了,非常谢谢!:grin:

太感谢了,试了好多路径方案都不行,这个终于成功了!
:pray::pray::pray:

这边贴的方法有点问题:
在使用accessSync函数时,参数url需要加个前缀 wx.env.USER_DATA_PATH +’/’;
参考如下:
传入的url记得需要包括文件后缀
getURL:function(url){
url = cc.url.raw(url);
if(cc.loader.md5Pipe){
url = cc.loader.md5Pipe.transformURL(url);
}
try{
let fs = wx.getFileSystemManager();
let localPath = wx.env.USER_DATA_PATH +’/’;
url = localPath + url;
fs.accessSync(url);
}
catch (error) {
url = window.wxDownloader.REMOTE_SERVER_ROOT + “/” + url;
}
return url;
},

mark