美文网首页
微信小程序之分享朋友圈

微信小程序之分享朋友圈

作者: tigerlx | 来源:发表于2019-01-31 16:54 被阅读0次

    有朋自远方来,不亦悦乎

    近日接到大佬任务,要在小程序中新加分享朋友圈功能,可是微信小程序官方是禁止分享朋友圈的,并且程序中有分享朋友圈相关文字都过不了审。

    既然没有直接的api,那咱们就迂回一下,目前通用的小程序分享朋友圈功能,都是生成一张带有小程序二维码的图片保存到相册,提示用户使用改图片发朋友圈

    所以问题来了,如何保存一张带有小程序二维码的图片保存到相册呢

    • 保存到相册授权
      保存到相册需要用户授权才行,下面是我的代码
      注意在button标签加上open-type属性,否则手机可能无法弹出授权框,调试工具不会体现出来
      这里的open-type使用的是变量,主要是在用户拒绝授权时,再次点击跳入权限设置页,客官也可自行决定拒绝授权的方案
    // wxml
      <button bindtap="getAuthSetting" open-type="{{openType}}"]>保存截图</button>
    
    // js
      getAuthSetting() {
            let that = this
            wx.getSetting({
                success(res) {
                    // 有则直接保存
                    if (res.authSetting['scope.writePhotosAlbum']) {
                        that.saveImage()
                    } else {
                        // 如果没有则获取授权
                        wx.authorize({
                            scope: 'scope.writePhotosAlbum',
                            success() {
                                that.saveImage()
                            },
                            fail() {
                                // 如果用户拒绝过或没有授权,则再次打开授权窗口
                                // (ps:微信api又改了现在只能通过button才能打开授权设置,以前通过openSet就可打开)
                                that.setData({
                                    openType: 'openSetting'
                                })
                            }
                        })
                    }
                }
            })
        },
    
    • canvas画图
      使用微信的cancas组件,注意保证canvas-id的唯一
      我这里需要用到echart的雷达图,所以我用的echarts-for-weixin,有需要的可以去git看看,使用很方便
      https://github.com/ecomfe/echarts-for-weixin
      绘图代码省略,任君肆意挥洒

    • 导出canvas并且保存至相册
      导出canvas与h5的canvas不一样,需要调用wx.canvasToTempFilePath(options, this)
      这个api需要注意第二个参数,this指向canvas所在组件,否则调用失败
      下面代码中导出的canvas是引入echart生成的子组件,大家自己用的时候注意options中的canvasId,和this参数的值,切勿盲目复制粘贴
      保存至相册需调用wx.saveImageToPhotosAlbum

    // 导出echart图
    let child = this.selectComponent('#mychart-dom-bar')
    
    wx.canvasToTempFilePath({
        x: 0,
        y: 0,
        width: 345,
        height: 800,
        destWidth: 690, // 像素宽度,一般是canvas宽的2或4倍,保存出来的图片才不会模糊
        destHeight: 1600, // 像素高度,一般是canvas高的2或4倍,保存出来的图片才不会模糊
        canvasId: 'mychart',
        success: function (res) {
            let tempFilePath = res.tempFilePath
            wx.saveImageToPhotosAlbum({
                filePath: tempFilePath,
                success() {
                    wx.showToast({
                        title: '保存成功'
                    })
                },
                fail() {
                    wx.showToast({
                        title: '保存失败',
                        icon: 'none'
                    })
                }
            })
            wx.hideToast()
        },
        fail: function (err) {
            console.log(err)
        }
    }, child)
    

    OK,大功告成
    奉上微信小程序api一份,供君参考
    https://developers.weixin.qq.com/miniprogram/dev/api/

    愿君奔跑千里,归来依旧少年


    相关文章

      网友评论

          本文标题:微信小程序之分享朋友圈

          本文链接:https://www.haomeiwen.com/subject/metlsqtx.html