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

yizhihongxing

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

生成带参数的小程序码

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

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中substr_count()函数获取子字符串出现次数的方法

    当我们需要统计一个字符串中某个子字符串出现的次数时,可以使用PHP的substr_count()函数。使用substr_count()函数只需知道原始字符串和要查找的子字符串即可,函数会返回一个整数值代表子字符串在原始字符串中出现的次数。 以下是使用substr_count()函数获取子字符串出现次数的方法: 语法 substr_count($string,…

    PHP 2023年5月26日
    00
  • PHP与Java进行通信的实现方法

    这里将详细讲解PHP与Java进行通信的实现方法,我们可以使用两种不同的方法——RESTful API和socket通信来实现: 使用RESTful API进行通信 1. 编写Java端的RESTful API接口 Java端需要实现RESTful API接口,来对外提供服务。这里使用Spring Boot框架来编写示例代码,其他Java框架也可以使用类似的…

    PHP 2023年5月27日
    00
  • php实现斐波那契数列代码分享

    以下是详细讲解“php实现斐波那契数列代码分享”的完整攻略: 什么是斐波那契数列? 斐波那契数列是一个以递归方法定义的数列,其中每一项都是前两项之和。即:$f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2) $。 实现斐波那契数列的方法 实现斐波那契数列有多种方式,这里我们演示最基本的两种实现方法。 方法一:递归实现 递归实现是最直接的方法,也…

    PHP 2023年5月23日
    00
  • qq群作业一键提醒功能怎么使用?

    使用Markdown格式编写“qq群作业一键提醒功能”的完整攻略如下: 介绍 “qq群作业一键提醒功能”的实现需要使用到QQ机器人,依靠机器人发送消息的方式实现提醒的功能。其中,需要借助一些第三方库来实现机器人的逻辑。本攻略将详细介绍以和风机器人为例的实现过程。 步骤 首先,需要申请一份和风机器人的API密钥,获取方法可以参考和风天气官网API文档。 在群内…

    PHP 2023年5月26日
    00
  • 微信小程序获取微信运动步数的实例代码

    下面我将详细讲解“微信小程序获取微信运动步数的实例代码”的完整攻略。 一、前提条件 在使用微信小程序获取微信运动步数之前,需要满足以下几个前提条件: 用户已经在微信中授权了小程序访问微信运动步数。 小程序已经申请了微信运动步数的授权。 二、获取微信运动步数的实现方式 2.1 方式一:使用微信运动接口获取步数 微信开放平台提供了相关的微信运动接口,小程序可以通…

    PHP 2023年5月23日
    00
  • 微信小程序 http请求封装详解及实例代码

    针对“微信小程序 http请求封装详解及实例代码”,我提供如下攻略: 1. http请求封装 在微信小程序中,我们可以使用 wx.request 方法进行网络请求。但是在实际开发中,我们可能会在多个地方用到网络请求,而每一次都写一遍请求代码不太方便,也容易出错。因此,我们可以将 http 请求进行封装,提高开发效率和代码可维护性。 1.1 封装方法 我们可以…

    PHP 2023年5月23日
    00
  • 使用ajaxfileupload.js实现ajax上传文件php版

    使用ajaxfileupload.js可以实现通过Ajax方式上传文件,本攻略将介绍如何使用ajaxfileupload.js上传文件并处理上传后的文件。 安装依赖 在使用ajaxfileupload.js之前需要安装jQuery,可以在官网下载,或者使用以下CDN: <script src="https://code.jquery.com/…

    PHP 2023年5月27日
    00
  • PHP的反射类ReflectionClass、ReflectionMethod使用实例

    下面我将为您详细讲解一下“PHP的反射类ReflectionClass、ReflectionMethod使用实例”的攻略。 一、反射类简介 反射是指在运行时获取一个类的信息,比如类的方法、属性、注释等。在PHP中提供了一个反射API,通过反射类可以方便地获取某个类的各种信息,这个反射API就是反射类。 二、反射类的基本使用 2.1 创建反射类对象 在PHP中…

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