微信小程序分享小程序码的生成(带参数)以及参数的获取

微信小程序是非常流行的一种小应用形式,而小程序的分享就显得尤为重要。本攻略将详细介绍如何生成带参数的小程序码并获取参数,在其中包含两个实例来帮助理解。

生成带参数的小程序码

小程序码可以用于分享小程序的入口,它可以通过微信扫码打开小程序,并打开对应的页面。下面我们将详细介绍如何生成带参数的小程序码。

1. 在小程序中创建二维码图片

小程序官方提供了一个API wx.createQRCodeImg() 来获取小程序二维码图片,在调用的时候需要传入以下参数:

  • path:生成的小程序码跳转的页面路径。
  • width:生成的小程序码宽度。
  • autoColor:是否自动配置线条颜色,如果另外的参数颜色值为0,那么将使用默认的颜色填充线条。
  • lineColor:小程序码的线条颜色,为小程序码的颜色值,默认为黑色。
  • isHyaline:是否透明背景,默认为false。

下面是示例代码:

wx.createQRCodeImg({
    path: '/pages/index?source=share',
    width: 200,
    autoColor: false,
    lineColor: {
        'r': 0,
        'g': 0,
        'b': 0
    },
    isHyaline: false,
    success: (res) => {
        console.log(res);
        //此处将res中的图片地址更新到界面上的<img>标签上即可
    },
    fail: (error) => {
        console.log(error);
    }
})

以上代码中,我们传入了一个path参数,它是一个字符串,代表了小程序码跳转的页面路径。在这里,我们传入了 /pages/index?source=share,其中source就是我们要传递的参数。当用户扫码进入小程序时,它将会直接跳转至 /pages/index 页面,并在路由参数中携带了一个 source 参数,方便我们在index 页面中处理。

2. 生成带参数的小程序码

上面提到的 wx.createQRCodeImg() 生成的小程序码是一个普通的二维码图片,并不带参数。要想生成带参数的小程序码,需要调用小程序的 cloud 接口来生成。

我们需要配置小程序的 project.config.json 文件,添加如下配置:

{
    "cloudfunctionRoot": "cloudfunctions",
    "miniprogramRoot": "miniprogram",
    "appid": "你的小程序appid",
    "setting": {
        "urlCheck": true,
        "es6": true,
        "postcss": true,
        "preloadBackgroundData": false,
        "minified": true,
        "newFeature": true,
        "coverView": true,
        "nodeModules": true,
        "autoAudits": false,
        "uglifyFileName": true,
        "checkInvalidKey": true,
        "checkSiteMap": true,
        "uploadWithSourceMap": true
    },
    "cloudfunctionService": {
        "service": "云服务名",
        "env": "云开发环境id"
    }
}

以上配置中,我们添加了一个 cloudfunctionService 的配置来指明我们要调用哪个云函数。

在上面的配置中,我们设置了serviceenv 两个参数。这两个参数通常在小程序云函数中用来初始化云服务所需的信息。

const cloud = require('wx-server-sdk')
cloud.init({
    env: '云开发环境id',
    traceUser: true,
    // 此处service的值就需要与project.config.json中的配置保持一致
    service: '云服务名'
})

之后我们就可以调用 cloud.openapi.wxacode.getUnlimited() 接口来生成带参数的小程序码了。需要注意的是,在同级目录下创建一个空白文件 project.config.json 以便小程序可以访问云开发功能。

// 引入云开发模块
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口
exports.main = async (event, context) => {
    try {
        let result = await cloud.openapi.wxacode.getUnlimited({
            scene: event.scene,
            page: event.page,
            // 设置小程序码的宽高
            width: 200,
            isHyaline: true
        })
        return result
    } catch (err) {
        return err
    }
}

可以看到,我们又传入了两个额外的参数 scenepage。其中, page 表示小程序码跳转的页面路径, scene 表示需要传递给该页面的参数。获取小程序码的接口将把这两个参数组合成一个字符串,生成带参数的小程序码。

我们可以使用云函数的方式或者使用HTTP请求来调用云函数,得到带参数的小程序码的结果。其中,结果是一个包含小程序码图片的 buffer 类型的数据,我们可以将其进行转换,并返回给前端应用使用。

获取小程序码参数

获取小程序码参数非常简单,只需要在小程序启动的时候,检查当前页面的路由参数即可。在上面的示例中,我们设置了一个source参数,因此可以通过以下方式来获取这个参数:

const app = getApp()
const source = app.globalData.options.source

在小程序启动时,我们可以通过 getApp() 来获取全局的应用实例,然后通过 options 属性来获取路由参数。只需要将这种方法放在 onLoad() 中,即可在小程序启动的时候处理这个参数。下面是具体示例代码:

// 从全局的应用实例中获取小程序启动参数
const app = getApp()
const source = app.globalData.options.source

// 小程序入口页面
Page({
    /**
     * 页面的初始数据
     */
    data: {
        message: ''
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function() {
        // 处理传递进来的source参数
        if (source) {
            this.setData({
                message: '我的来源是' + source
            })
        } else {
            this.setData({
                message: '没有传递source参数'
            })
        }
    },
})

在上面的示例代码中,我们在小程序入口页面 onLoad() 函数中处理了传递进来的 source 参数,并在界面上显示这个参数。需要注意的是,我们通常将全局的应用实例放在 app.js 文件中,并通过 getApp() 获取。

示例

上面是一组完整的示例代码,这里再给出两个小例子来演示如何生成带参数的小程序码并获取参数。

示例1

当我们希望在自己的业务中根据不同的菜品生成带参数的小程序码,可以在菜品页面上调用以下代码:

let product = {
    id: 2233,
    name: '白糖菜',
    price: 50.0
}
wx.cloud.callFunction({
    name: 'createWxCode',
    data: {
        scene: `product=${JSON.stringify(product)}`,
        page: 'pages/product/detail'
    },
    success: (res) => {
        console.log(res.result)
        //此处将res.result中的图片地址更新到界面上的<img>标签上即可
    },
    fail: (error) => {
        console.log(error)
    }
})

在详情页中,我们使用以下代码来获取页面参数来在界面上直接显示这个菜品的详细信息。

const app = getApp()
const product = JSON.parse(app.globalData.options.product)

Page({
    data: {
        product: product
    },
    onLoad: function() {
        console.log(product)
    }
})

示例2

当我们希望在自己的推广活动中生成带参数的小程序码,并在小程序中通过这个参数直接跳转到活动页面,可以在活动页的分享按钮上添加以下代码:

let shareParams = {
    activityId: 1234,
    title: '听凤凰FM 千万大奖等你拿',
    image: 'http://image.cdn.feng.com/group2/M00/29/18/wKgM-Bst_BWAlltPAAFzqyPfHRAAAJb3gMwfXMABoGZ630.png'
}
wx.cloud.callFunction({
    name: 'createWxCode',
    data: {
        scene: `shareParams=${JSON.stringify(shareParams)}`,
        page: 'pages/activity/detail'
    },
    success: (res) => {
        console.log(res.result)
        //此处将res.result中的图片地址更新到界面上的<img>标签上即可
    },
    fail: (error) => {
        console.log(error)
    }
})

在活动页中,我们使用以下代码来获取页面参数并在界面上显示这个活动的详细信息。

const app = getApp()
const shareParams = JSON.parse(app.globalData.options.shareParams)

Page({
    data: {
        shareParams: shareParams
    },
    onLoad: function() {
        console.log(shareParams)
    }
})

以上就是生成带参数的小程序码和获取小程序码参数的完整攻略,希望对小程序开发有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序分享小程序码的生成(带参数)以及参数的获取 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • PHP网站提速三大“软”招

    当我们开发 PHP 网站时,考虑到性能问题是非常重要的。在这里,我将分享三个有助于提高 PHP 网站速度的”软”招。 使用 CDN CDN 是内容分发网络的缩写,可以提供更好的用户体验和更快的加载速度。CDN 可以将你的静态资源(如图片、JavaScript、CSS 文件等)缓存在全球各地的服务器节点中,并通过最近的节点分配给最终用户。这样,用户可以从最近的…

    PHP 2023年5月30日
    00
  • PHP 错误处理机制

    PHP中错误处理机制主要是通过error_reporting和set_error_handler两个函数实现的。以下是处理PHP错误的完整攻略: 错误级别 PHP错误分为不同级别,每个级别对应一个数字。在PHP中提供了 error_reporting 函数来设置需要报告哪些错误级别的错误信息。 以下是常见的错误级别: E_ERROR: 致命错误,脚本无法运行…

    PHP 2023年5月26日
    00
  • PHP实现简单实用的分页类代码

    这里是实现PHP分页类的攻略。 第一步:创建类文件 首先,我们需要拥有一个类文件,定义一个Pagination类。该类具有以下属性: $pageNums:总页数 $pageSize:每页显示数据的数量 $currentPage:当前页面 $totalNums:总记录数 除此之外,类中还需要包含公共方法用于获取总页数、总记录数及当前页数据。 class Pag…

    PHP 2023年5月27日
    00
  • 微信小程序上传图片到php服务器的方法

    下面是关于“微信小程序上传图片到php服务器的方法”的完整攻略。 准备工作 在开始上传图片之前,我们需要准备以下工作: 创建一个php文件用于接收上传的图片,保存在服务器上。 生成并保存服务器上传接口的url地址。 将需要上传的图片转换为base64编码格式。 在微信小程序的配置文件中添加request合法域名。 在准备工作完成后,我们就可以开始进行图片上传…

    PHP 2023年5月23日
    00
  • php DES加密算法实例分析

    PHP DES加密算法实例分析 什么是DES加密算法? DES(Data Encryption Standard)即数据加密标准,是一种流行的对称加密算法。它的安全性和可靠性已被广泛证实,并被广泛应用于许多不同的领域,例如金融、电子商务等。 DES加密算法使用相同的密钥对数据进行加密和解密,因此它也被称为对称加密算法。在DES加密算法中,数据被分成64位的块…

    PHP 2023年5月26日
    00
  • PHP递归实现汉诺塔问题的方法示例

    针对“PHP递归实现汉诺塔问题的方法示例”的完整攻略,我将从以下几个方面进行讲解: 什么是汉诺塔问题及其解决方式 使用递归来解决汉诺塔问题的原理 PHP递归实现汉诺塔问题的方法示例 示例说明 1. 什么是汉诺塔问题及其解决方式 汉诺塔问题是一道经典的数学谜题,其描述如下:有三个柱子A、B和C,A柱子上自下而上按大小顺序放置了n个圆盘,要求将所有圆盘移动到C柱…

    PHP 2023年5月26日
    00
  • php 设计模式之 单例模式

    PHP 设计模式之 单例模式 单例模式是指保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式常用于管理共享的资源,例如数据库连接对象、文件系统等。 实现单例模式的步骤 通过将类的构造函数设置为私有,以防止外部创建新的对象实例。 创建一个静态方法,它将作为类的唯一入口。该方法将负责创建或返回现有实例的引用(如果已经存在)。 示例一:数据库连接类 以…

    PHP 2023年5月30日
    00
  • 微信小程序canvas写字板效果及实例

    微信小程序canvas写字板效果及实例 概述 在微信小程序中,使用canvas可以实现很多有趣的效果,如播放动画、绘制图形等等。其中,canvas写字板效果可以让用户在小程序中手写文字,增加用户体验和交互性。在本教程中,我们将详细讲解如何使用canvas实现写字板效果,并提供两个示例说明。 步骤 第一步:创建画布 在小程序页面中添加canvas标签,并设置宽…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部