小程序模板网

利用云函数来实现获取特定路径+参数的小程序码

2020-05-19 常山阵

背景

在小程序中,可以直接分享小程序到聊天窗口,但是无法分享小程序到朋友圈,但是朋友圈又是一个重要的推广场地,所以分享小程序码就成了重要途径。常常被朋友圈刷屏的各种带有小程序码的海报,就是一个应用场景。

普通的分享小程序码,直接在后台放一个通用的小程序码就可以了。但是如果需要分享一个特定路径+参数的小程序码就必须要借助小程序提供的API来实现了。

此次来和大家说一说如何利用云函数来实现获取特定路径+参数的小程序码。

接口

云函数为我们提供了三种获取小程序码的API:

利用云函数来实现获取特定路径+参数的小程序码(图1)

前两个都有数量限制,无法满足一些类似详情分享的场景,所以留给我们的道路只有wxacode.getUnlimited接口了。

先来看一下这个接口的主要参数:

利用云函数来实现获取特定路径+参数的小程序码(图2)

其他参数就不一一列举了,有需要可以直接去官方文档查看。 根据上面的参数,我们可以指定任意page,而且还可以传入页面参数,最终在小程序页面加载的时候,通过options来获取到scene,从而做数据加载。

实现

云函数

先来看一下云函数如何配置。 新建一个云函数qrcode后,在config.json中配置如下:

{
  "permissions": {
    "openapi": [
      "wxacode.getUnlimited"
    ]
  }
}
复制代码

然后在index.js中加入如下代码:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async(event, context) => {
  try {
    let param = {
      // 小程序传入的 scene 参数
      scene: event.scene,
      // 可以换成任意 page
      page: 'pages/index/index',
    };
    // 调用接口
    var result = await cloud.openapi.wxacode.getUnlimited(param)
    return result
  } catch (err) {
    return err
  }
}
复制代码

然后部署到云端,云函数部分就完成了。

小程序

再来看看小程序端如何调用:

requestQrcode(scene) {
    let that = this;
    wx.cloud.callFunction({
        name: 'qrcode',
        data: {
          scene: scene
        }
      })
      .then((res) => {
        let path = wx.env.USER_DATA_PATH + '/' + res.requestID + '.jpg'
        if (res.result.contentType == 'image/jpeg') {
          // 返回的结束是 base64 编码的二进制流
          // 这里直接保存到文件
          wx.getFileSystemManager()
            .writeFile({
              filePath: path,
              data: res.result.buffer,
              encoding: 'base64',
              success: (res) => {
              },
              fail: (res) => {
              }
            })
        } else {
          // 异常处理
        }
      })
  },
复制代码

最终在页面的onLoad(options)中可以这样获取到小程序码传递的参数scene:

onLoad: function(options) {
  let scene = options.scene;
},
复制代码

这样就完成了利用云函数来生成特定路径+参数的小程序码了,后面就可以利用这个小程序码来绘制海报。

问题

不知道你是否注意到scene参数有一个限制,最大32个可见字符,有时候很容易就超出了,那岂不是就没法用了?

没有什么可以难倒程序员!如果有,那一定是需求不合理~

短链,一个很好的方案。把所有的参数生成一个唯一的短链,作为scene参数传递,最后在加载的时候先解析短链,就可以获取到超长参数啦~

小技巧

如果你不需要给页面传入参数,直接在小程序管理平台最上方,有个工具->生成小程序码,填上页面路径就可以生成小程序码素材啦~

结尾

最后分享一个成品~

 

利用云函数来实现获取特定路径+参数的小程序码(图3)

 

 


易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/25208.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询