文章目录

  • 实现方案
  • 需下载二维码
  • 使用URL Schema
  • 微信云开发
  • 实现方案对比
  • 实践出真知(URLSchema)
  • 获取微信access_token
  • 获取openlink
  • H5页面(模拟短信跳转,验证ok)
  • 反馈问题
  • ios和Android 对URLSchema兼容性
  • 开发者工具可直接测试URL Schema
  • URL Schema 官方最新变更20220411
  • 一个urlSchema只能一个用户访问
  • 调用上限及有效期

    去年就在调研如何从短信链接跳转到微信小程序,搜索了好多,也去官方论坛转了一圈,得到的回复只有一个:不可能!     今天组内大神在逛帖子的时候告知我们微信官方文档有惊喜,跑去一看,果然很惊喜呀~

实现方案

需下载二维码

  1. 点击短信中链接,打开H5页面
  2. 保存页面中小程序二维码(包含指定页面地址和传参)
  3. 打开微信,扫描二维码进入小程序指定页面

使用URL Schema

  1. 点击短信中链接,打开H5页面
  2. 进入页面直接自动触发跳转操作,到小程序指定页面

微信云开发

  1. 在云开发中开通静态网站,然后将H5部署(收费)
  2. 使用 cloudbase.sendsms 接口,即可触发下发短信(需要强制使用微信短信平台)

实现方案对比

方案

优点

缺点

需下载二维码

实现方案可控,免费

体验感极差

使用URL Schema

实现方案可控,免费, 体验感可以

只能到正式环境中测试

微信云开发

依赖云开发,实现简单,体验感极好

收费,强制依赖微信短信平台

实践出真知(URLSchema)

获取微信access_token

GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appSecret

短信跳转微信小程序 java 短信跳转微信打开h5_Scheme

返回参数:

{
    "access_token": "access_token",
    "expires_in": 7200
}

获取openlink

被这个请求方式折磨了一通,access_token是放在请求url中,其他参数是放在body中

POST https://api.weixin.qq.com/wxa/generatescheme?access_token=access_token

短信跳转微信小程序 java 短信跳转微信打开h5_短信跳转微信小程序 java_02

返回参数:

{
    "errcode": 0,
    "errmsg": "ok",
    "openlink": "weixin://dl/business/?t=12345678910"
}

H5页面(模拟短信跳转,验证ok)

短信链接跳转与H5页面跳转类似,此处用H5页面跳转为例

location.href = 'weixin://dl/business/?t=12345678910'

反馈问题

ios和Android 对URLSchema兼容性

感谢Mr_saisai大佬的指正,微信官方文档上有一段关于系统兼容性问题的描述,IOS无需额外添加H5页面进行辅助跳转~

iOS系统支持识别URL Scheme,可在短信等应用场景中直接通过Scheme跳转小程序。
Android系统不支持直接识别URL Scheme,用户无法通过Scheme正常打开小程序,
开发者需要使用H5页面中转,再跳转到Scheme实现打开小程序

开发者工具可直接测试URL Schema

以前需要将未完成的页面发布到正式环境才能进行跳转测试,今天前端大佬悄咪咪告诉我:在微信开发者工具中不用发布页面也能测试啦~~ nice

短信跳转微信小程序 java 短信跳转微信打开h5_javascript_03

URL Schema 官方最新变更20220411

获取 URL Scheme

自 2022 年 4 月 11 日起,URL Scheme有效期最长 30 天,不再支持永久有效的URL Scheme、不再区分短期有效URL Scheme与长期有效URL Scheme。若在微信外打开,用户可以在浏览器页面点击进入小程序。每个独立的URL Scheme被用户访问后,仅此用户可以再次访问并打开对应小程序,其他用户无法再次通过相同URL Scheme打开该小程序。 在本次规则调整生效前已经生成的URL Scheme,如果有效期超过30天或长期会被降级为30天有效,只能被1个用户访问,开始时间从调整日期开始计算。

针对以下两个变更,对原有的URL Schema生成代码无影响(无需变更代码逻辑),只是微信内部会将参数统一处理!

一个urlSchema只能一个用户访问

调用上限及有效期

调用上限 Scheme 将根据是否为到期有效与失效时间参数,分为短期有效Scheme与长期有效Scheme: 单个小程序每日生成 Scheme 上限为50万个(包含短期有效 Scheme 与长期有效 Scheme) 有效时间超过180天的 Scheme 或永久有效的 Scheme 为长期有效Scheme,单个小程序总共可生成长期有效 Scheme 上限为10万个,请谨慎调用 有效时间不超过180天的 Scheme 为短期有效Scheme,单个小程序生成短期有效 Scheme 不设上限