微信小程序开发实战9_1 生成小程序码

article/2025/3/18 22:07:52

9.1 小程序的入口场景

为了便于商家进行小程序的推广,微信提供了多种小程序入口的方式,用户可以通过常规的方式来使用小程序:例如用户可以通过搜索关键字来搜索并进入小程序,也可以通过附近的小程序来选择并进入小程序。用户还可以通过扫描商家提供的小程序码或者小程序二维码来进入小程序。用户可将小程序发送给好友或者微信群,这些用户可以通过点击小程序卡片的方式进入小程序。另外小程序也可以与微信公众号关联,可以将小程序的路径设置为公众号的菜单,用户点击公众号菜单就可以进入小程序。微信小程序的入口方式非常多,到目前为止有超过100多种入口场景。以下是部分常用的入口场景:
1005 微信首页顶部搜索框的搜索结果页
1006 发现栏小程序主入口搜索框的搜索结果页
1026 发现栏小程序主入口,「附近的小程序」列表
1011 扫描二维码
1012 长按图片识别二维码
1047 扫描小程序码
1048 长按图片识别小程序码
1007 单人聊天会话中的小程序消息卡片
1008 群聊会话中的小程序消息卡片
1044 带shareTicket的小程序消息卡片
1014 小程序订阅消息(与1107相同)
1065 URL scheme 详情
1035 公众号自定义菜单
1043 公众号模板消息
1058 公众号文章
1073 客服消息列表下发的小程序消息卡片
1074 公众号会话下发的小程序消息卡片
1081 客服消息下发的文字链
1082 公众号会话下发的文字链
小程序可以在 App 的onLaunch和onShow事件处理函数中获取场景值,或通过wx.getLaunchOptionsSync接口来获取场景值。部分场景值下还可以获取公众号或小程序的appId。App 的onLaunch, onShow 事件处理函数的参数如下:

  • path:打开小程序的路径
  • query:打开小程序的query
  • scene:打开小程序的场景值
  • shareTicket:小程序分享票据
  • referrerInfo:当场景为由从另一个小程序或公众号或App打开时,返回此字段
  • referrerInfo.appId:来源小程序或公众号或App的appId
  • referrerInfo.extraData:来源小程序传过来的数据,scene=1037或1038时支持
    获取入口场景值的示例代码:
//判断小程序是否来自公众号自定义菜单跳转
onLaunch: function (options) {if (options.scene == 1035){console.log("场景:公众号自定义菜单")}
}

小程序的部分入口场景需要小程序应用的开发人员提供支持才能够使用,例如为小程序的页面生成小程序码或小程序二维码,将小程序页面发送给微信好友或微信群,以及为小程序页面生成scheme码,本章介绍这些小程序分享相关的技术。

9.2生成页面小程序码

目前二维码已经广泛应用,在小程序设计的初期,小程序平台提供的是二维码的扫码方式。虽然通过扫描二维码进入小程序也是非常方便的,但这并非最佳的方式。用户在扫一个二维码时,他并不知道当前这次扫码会出现什么样的服务,因为二维码的背后有可能是公众号、小程序、网页服务、支付页面、添加好友等不同的服务。为了让用户在扫码之前就有一个明确的预期,因此微信设计了小程序码。
小程序码在样式上更具辨识度,相对于二维码来说,小程序主题的品牌形象更加清晰明显,可以帮助开发者更好地推广小程序。在发布小程序之后,小程序管理平台会提供对应的小程序码的预览和下载,开发者可以自行下载小程序码用于线上和线下的小程序推广。
虽然您可以在小程序管理后台中下载小程序码用于推广您的小程序,但是美中不足的是小程序管理后台中小程序码对应一个固定的页面,您可能希望为不同的使用场景生成不同的小程序码,用户扫描该小程序码后可直接进入小程序的对应页面。为满足不同需求和场景,微信提供了以下接口,用于生成动态的小程序码以及小程序二维码:

接口A:wxacode.get

用于生成小程序码,适用于需要的码数量较少的业务场景。可接受path 参数较长。通过该接口生成的小程序码,永久有效,但数量有限,请谨慎使用。
wxacode.get参数中的path参数的最大长度为128个字节。

接口B:wxacode.getUnlimited

用于生成小程序码,适用于需要的码数量极多的业务场景。可接受页面参数较短,生成个数不受限。通过该接口生成的小程序码,永久有效。 wxacode.getUnlimited用scene且最大32个可见字符,只支持数字,大小写英文以及部分特殊字符,path不支持带参数。
用户扫描该码进入小程序后,开发者需在对应页面获取scene字段的值,再做处理逻辑。

接口C:wxacode.createQRCode

用于生成小程序二维码,适用于需要的码数量较少的业务场景。可接受 path参数较长,生成个数受限。通过该接口生成的小程序二维码,永久有效。用户扫描该码进入小程序后,将直接进入path对应的页面。
注意事项

  • 接口只能生成已发布的小程序的二维码
  • 接口A加上接口C,总共生成的码数量限制为100,000,请谨慎调用。
  • 接口B调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成。
    这三个接口的调用方式基本类似,调用接口之前,首先需要获取微信的access_token,然后按照接口的要求通过HTTP的POST方法调用微信提供的接口,下面介绍通过wxacode.getUnlimited来获取小程序码的方法:
    请求地址:
    api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
    请求参数:
  • access_token:接口调用凭证。访问wxacode.getUnlimited首先需要获取微信的access_token,具体获取方法请参阅本文前面的章节中的介绍。
  • scene:最大32个可见字符,只支持数字,大小写英文以及部分特殊字符。scene字段的值会作为query参数传递给小程序。用户扫描该码进入小程序,开发者可以获取到二维码中的scene值,再做处理逻辑。
  • page:必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
  • width:二维码的宽度,单位px,最小280px,最大1280px
  • auto_color:自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认false
  • line_color:auto_color为false时生效,使用rgb设置颜色
  • is_hyaline:是否需要透明底色,为 true 时,生成透明底色的小程序
    返回值:
    如果调用成功,会直接返回图片二进制内容,如果请求失败,会返回 JSON 格式的数据。
    注意:
  • POST参数需要转成JSON字符串,不支持form表单提交。
  • 接口只能生成已发布的小程序的二维码
  • 调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成
//生成页面二维码
func HandlerGenQrcode(w http.ResponseWriter, r *http.Request) {//page路径必须为已发布的小程序页面路径page := r.FormValue("page");//scene最大32个可见字符,只支持数字,大小写英文以及部分特殊字符scene := r.FormValue("scene");if len(scene) > 32 {http.Error(w, "scene长度错误", http.StatusInternalServerError)return}paramstr :=fmt.Sprintf("{\"page\":\"%s\", \"scene\":\"%s\"}", page, scene)wx_addr := "https://api.weixin.qq.com/wxa/getwxacodeunlimit"wx_addr += "?access_token=" + GetWxToken()res, err := http.Post(wx_addr, "charset=UTF-8", strings.NewReader(paramstr))if err != nil {fmt.Println(err)http.Error(w, "微信请求错误", http.StatusInternalServerError)return}raw, err := ioutil.ReadAll(res.Body)res.Body.Close()if err != nil {fmt.Println(err)http.Error(w, "微信返回错误", http.StatusInternalServerError)return}w.Header().Set("Content-Type","image/gif")io.WriteString(w, string(raw))
}

小程序中获取scene值

scene字段的值会作为query参数传递给小程序。用户扫描该码进入小程序,开发者可以获取到二维码中的scene值,再做处理逻辑。scene需要使用decodeURIComponent才能获取到生成二维码时传入的scene。

Page({onLoad: function (options) {const scene = decodeURIComponent(options.scene)console.log(scene);}
})

扫描小程序码、小程序二维码,微信会直接跳转到了正式版的小程序。为了能够调试小程序码扫描功能,微信开发者工具提供了二维码编译调试方式。具体操作方式为:开发工具上的【编译模式】 ->【通过二维码编译】,选择你截图的二维码。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/twloRPZo.shtml

相关文章

微信小程序生成小程序码和展示

云函数代码: // 云函数入口文件 const cloud require(wx-server-sdk) cloud.init({env: cloud.DYNAMIC_CURRENT_ENV })// 云函数入口函数 exports.main async (event, context) > {try {const result await cloud.openapi.wxacode.getUnlimited({scene:event…

【微信小程序】 java如何生成小程序码,并跳转到指定落地页 demo

前言: 需求场景,用户通过扫描小程序码,到指定的页码,希望能帮到大家,切记,要等到小程序发版测能测试。 1、微信官网 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.…

uni-app跨端开发之生成小程序码和调试scene参数爬坑指南

前段时间,公司的小程序中有一个分享小程序码邀请好友的功能。前前后后也踩过不少坑,然后就有了这篇笔记。如果看官正在因生成微信小程序码或调试scene参数而苦恼,不妨继续往下看看,或许这篇文章能够帮助到您哟。 1、如何生成微信…

微信小程序实现前端自己生成小程序码并且带参数

hxrhwxacode.getUnlimited | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html后端开发希望我们前端自己去生成小程序码并且带上用户信息。于是查到了官网上有相关的文档。开始着手去…

小程序云函数生成小程序码

云函数生成小程序码的Demo # 云函数 config.json配置,云调用wxacode.get API 的权限 {"permissions": {"openapi": ["wxacode.get"]} }index.js const cloud require(wx-server-sdk) cloud.init()exports.main async (event, context) > {t…

微信小程序生成小程序码以及参数的获取

一、小程序码介绍 通过后台接口可以获取小程序任意页面的小程序码,扫描该小程序码可以直接进入小程序对应的页面,所有生成的小程序码永久有效,可放心使用。 目前小程序码有两种形式,推荐生成并使用小程序码,它具有更好…

小程序指定页面生成小程序码(任意页面),所有运营在小程序端就可以自主得到页面链接,再也不用每次去协助看页面链接了~

写在前面: 业主运营经常会咨询,公众号放小程序链接,或者小程序后台使用,分类链接是哪一个,商品具体链接是哪一个,拼团砍价秒杀链接是哪一个。这里是设置好,解决以上所有不定期的咨询。 一、官方…

小程序-云开发-实现生成小程序码

虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如何操作 点击这里,标星不迷路 前言 小程序因为传播快,易分…

超强、超详细Redis入门教程

转载自: http://www.h5min.cn/article/56448.htm 这篇文章主要介绍了超强、超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 【本教程目录】 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动r…

Redis02:企业架构介绍以及redis介绍

企业架构介绍以及redis介绍 互联网项目架构演进单机Mysql的演进当今企业架构分析 Redis概述 互联网项目架构演进 单机Mysql的演进 1、单机Mysql的年代 90年代一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候更多的去使用静态html&#…

Redis技术

一.基本知识 (1)NoSQL数据库简介 技术的分类: 1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN 2、解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis 3、解决性能的问题:NoSQL、Java线程、Hadoop、…

《Redis系列专题》 之 大规模互联网应用Redis架构要点(精华)

建议有一定工作经验者阅读 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况…

大数据互联网架构阶段 Redis(二)

Redis(二) 零 、 目录 将缓存引入电商项目主从复制哨兵模式集群容忍度CAP理论 十、 将缓存引入电商项目 使用Spring框架维护Jedis池对象 引入一个配置文件 application-redis.config <beans xmlns"http://www.springframework.org/schema/beans"xmlns:context&…

大数据下Redis的应用

大数据下Redis的应用 1、Redis客户端区别 1.1 redis常用客户端 目前市面上比较流行的客户端有jedis、lettuce、redisson •jedis jedis客户端连接方式是基于TCP阻塞方式 •lettuce lettuce内部是基于netty的多路复用异步非阻塞方式&#xff08;目前业界解决高并发大数据的问…

redis互联网真实应用场景

Redis 1.数据类型&#xff08;5种&#xff09; String、hash、list、set、zset 2.常用命令 2.1 String 分布式锁 SETNX 当别的进程枷锁后 讲不能获得锁 利用INCR来产生分布式序列号&#xff0c;优化策略&#xff1a;一下拿出多个序列号到服务器本地&#xff0c;之后在服务器…

大规模互联网应用Redis架构要点(转)

通常&#xff0c;为了提高网站响应速度&#xff0c;总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用&#xff0c;热点数据量往往巨大&#xff0c;几十G上百G是很正常的事儿&#xff0c;在这种情况下&#xff0c;如何正确架…

Redis 为什么在互联网应用中广泛应用?

1. redis 都能干嘛 缓存&#xff0c;毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效&#xff1b;排行榜&#xff0c;在使用传统的关系型数据库&#xff08;mysql oracle 等&#xff09;来做这个事儿&#xff0c;非常的麻烦&#xff0c;而利用Redis…

从 Redis7.0 发布看 Redis 的过去与未来

前言 经历接近一年的开发、三个候选版本&#xff0c;Redis 7.0终于正式发布&#xff0c;这是Redis历史上改变最多的一个大版本&#xff0c;它不仅包含了50多个新命令&#xff0c;还有大量核心新特性与改进&#xff0c;这些不仅能够解决用户使用中的诸多问题&#xff0c;还进一…

Redis简介

​强烈推荐一个大神的人工智能的教程&#xff1a;http://www.captainai.net/zhanghan 【前言】 组长反复提到系统加载的慢性能有待提高&#xff0c;正好这两天任务都提前完成&#xff1b;于是乎开始着手研究Redis&#xff1b;经过两天的研究将Redis应用到了系统中并做了相关的…

旅游专题图制作

一 数据源 从网上下载的全国各行政区域矢量图层、福建省九市矢量边界图、福建省公路矢量图、福建省河流矢量图、福建省铁路矢量图&#xff0c;其中&#xff0c;它们的投影坐标系为WGS84投影坐标系以及福建省2018旅游景点图。 二&#xff0e;专题地图设计过程 1.打开Arcgis 10…