获取打开小程序任意页面的链接,适用于从短信、邮件、微信外网页等场景打开小程序。
服务端调用
短信打开小程序的三种方式:
通过URL Scheme实现
通过服务端接口或在小程序管理后台生成URL Scheme后,自行开发中转H5页面。
将带有中转H5链接的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开小程序。
通过URL Link实现
通过服务端接口生成URL Link。
直接将带有URL Link的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开小程序。
通过云开发静态网站实现
可以参考「云开发」-「静态网站」-「短信跳小程序」。
1、URL Scheme
通过URL Scheme打开小程序的场景值为1065。Scheme如下:weixin://dl/business/?t= *TICKET*
(1)获取URL Schema
方式一:
POST https://api.weixin.qq.com/wxa/generatescheme?access_token=ACCESS_TOKEN
请求参数
access_token|cloudbase_access_token 接口调用凭证
jump_wxa 跳转到的目标小程序信息。
path 通过scheme码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带query。path为空时会跳转小程序主页。
query 通过scheme码进入小程序时的query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:`!#$&'()*+,/:;=?@-._~%``
env_version 要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop",仅在微信外打开时生效
is_expire 生成的scheme码类型,到期失效:true,永久有效:false。注意,永久有效scheme和有效时间超过180天的到期失效scheme的总数上限为10万个,详见获取URLscheme,生成scheme码前请仔细确认。
expire_type 到期失效的scheme码失效类型,失效时间:0,失效间隔天数:1
expire_time 到期失效的scheme码的失效时间,为Unix时间戳。生成的到期失效scheme码在该时间前有效。最长有效期为1年。is_expire为true且expire_type为0时必填
expire_interval 到期失效的scheme码的失效间隔天数。生成的到期失效scheme码在该间隔时间到达前有效。最长间隔天数为365天。is_expire为true且expire_type为1时必填
云函数调用:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.urlscheme.generate({
"jumpWxa": {
"path": '/pages/publishHomework/publishHomework',
"query": ''
},
"isExpire": true,
"expireTime": 1606737600
})
return result
} catch (err) {
return err
}
}
方式二:小程序管理后台「工具」-「生成 URL Scheme」入口可以获取打开小程序任意页面的URL Scheme
iOS系统支持识别URL Scheme,可在短信等应用场景中直接通过Scheme跳转小程序。
Android系统不支持直接识别URL Scheme,开发者需要使用H5页面中转,再跳转到Scheme实现打开小程序,跳转代码示例如下:
location.href = 'weixin://dl/business/?t= *TICKET*'
使用云开发静态网站跳转小程序
网页会判断所在的环境来觉得采用哪种跳转方式,如检测到微信客户端内,则免鉴权使用开放标签跳转,如检测到在外部浏览器或 App,则使用URL Scheme跳转小程序。
示例网页地址:https://postpay-2g5hm2oxbbb721a4-1258211818.tcloudbaseapp.com/jump-mp.html
详细代码示例和说明:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/staticstorage/jump-miniprogram.html
微信内的网页如需打开小程序请使用微信开放标签-小程序跳转按钮(https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#%E5%BC%80%E6%94%BE%E6%A0%87%E7%AD%BE%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3)
无公众号也可以直接使用小程序身份开发网页并免鉴权跳转小程序,见云开发静态网站跳转小程序。符合开放范围的小程序可以下发支持打开小程序的短信
2、URL Link
POST https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN
请求参数
access_token|cloudbase_access_token 接口调用凭证
path 通过URLLink进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带query。path为空时会跳转小程序主页
query 通过URLLink进入小程序时的query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~%
env_version 要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop",仅在微信外打开时生效。
is_expire 生成的URLLink类型,到期失效:true,永久有效:false。注意,永久有效Link和有效时间超过180天的到期失效Link的总数上限为10万个,详见获取URLLink,生成Link前请仔细确认。
expire_type 小程序URLLink失效类型,失效时间:0,失效间隔天数:1
expire_time 到期失效的URLLink的失效时间,为Unix时间戳。生成的到期失效URLLink在该时间前有效。最长有效期为1年。expire_type为0必填
expire_interval 到期失效的URLLink的失效间隔天数。生成的到期失效URLLink在该间隔时间到达前有效。最长间隔天数为365天。expire_type为1必填
cloud_base 云开发静态网站自定义H5配置参数,可配置中转的云开发H5页面。不填默认用官方H5页面
env 云开发环境
domain 静态网站自定义域名,不填则使用默认域名
path 云开发静态网站H5页面路径,不可携带query
query 云开发静态网站H5页面query参数,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:`!#$&'()*+,/:;=?@-._~%``
resource_appid 第三方批量代云开发时必填,表示创建该env的appid(小程序/第三方平台)
云函数方式:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.urllink.generate({
"path": '/pages/publishHomework/publishHomework',
"query": '',
"isExpire": true,
"expireType": 1,
"expireInterval": 1,
"envVersion": 'release',
"cloudBase": {
"env": 'xxx',
"domain": 'xxx.xx',
"path": '/jump-wxa.html',
"query": 'a=1&b=2'
}
})
return result
} catch (err) {
return err
}
}
3、Short Link
适用于微信内拉起小程序的业务场景。通过Short Link打开小程序的场景值为 1179。生成的ShortLink如下所示:#小程序://小程序示例/示例页面/9pZvnVw3KMCQpVp
POST https://api.weixin.qq.com/wxa/genwxashortlink?access_token=ACCESS_TOKEN
请求参数
access_token|cloudbase_access_token 接口调用凭证
page_url 通过ShortLink进入的小程序页面路径,必须是已经发布的小程序存在的页面,可携带query,最大1024个字符
page_title 页面标题,不能包含违法信息,超过20字符会用...截断代替
is_permanent 生成的ShortLink类型,短期有效:false,永久有效:true
云函数方式:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.shortlink.generate({
"pageUrl": '/pages/publishHomework/publishHomework?query1=q1',
"pageTitle": 'Homework title',
"isPermanent": false
})
return result
} catch (err) {
return err
}
}
4、NFC标签打开小程序
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/NFC.html