微信内部接口schema 跳转ticket接口 的能力,大大方便了短信、邮件、外部网页等唤起微信小程序,公众号,二维码,任意网页链接。
通过服务端接口或在部分内部接口入口可以获取打开小程序任意页面的URL Scheme。适用于从短信、邮件、微信外网页等场景打开小程序。 通过URL Scheme打开小程序的场景值为 1065。
生成的URL Scheme如下所示:
weixin://dl/business/?ticket= TICKET 或者weixin://dl/business/?t=
iOS系统支持识别URL Scheme,可在短信等应用场景中直接通过Scheme跳转小程序。
Android系统不支持直接识别URL Scheme,用户无法通过Scheme正常打开小程序,开发者需要使用H5页面中转,再跳转到Scheme实现打开小程序,跳转代码示例如下:
location.href = 'weixin://dl/business/?t= _TICKET_'
该跳转方法可以在用户打开H5时立即调用,也可以在用户触发事件后调用。
调用上限
Scheme将根据是否为到期有效与失效时间参数,分为短期有效Scheme与长期有效Scheme:
单个小程序每日生成Scheme上限为50万个(包含短期有效Scheme与长期有效Scheme)
有效时间超过31天的Scheme或永久有效的Scheme为长期有效Scheme,单个小程序总共可生成长期有效Scheme上限为10万个,请谨慎调用
有效时间不超过31天的Scheme为短期有效Scheme,单个小程序生成短期有效Scheme不设上限
注意事项
生成的URL Scheme仅支持从微信外打开小程序。微信内的网页如需打开小程序请使用微信开放标签-小程序跳转按钮,无公众号也可以直接使用小程序身份开发网页并免鉴权跳转小程序,见云开发静态网站跳转小程序。符合开放范围的小程序可以下发支持打开小程序的短信。
该功能基本覆盖当前用户正在使用的微信版本,开发者无需进行低版本兼容。
只能生成已发布的小程序的URL Scheme。
通过URL Scheme跳转到微信时,可能会触发系统弹框询问,若用户选择不跳转,则无法打开小程序。请开发者妥善处理用户选择不跳转的场景。
schema 链接格式大体是这样:weixin://dl/business/?ticket=QQ10572137,但是这段文本在安卓端无法识别。小规模测试结果如下:
后来想到用一个正常能够识别的网页地址,内容是重定向到指定的 schema 链接。这就是擅长的领域了,query 参数上带上 schema 链接,location.href 一下不就行了。这里就不 show 代码了,能看到文章的你一定行。
但是,发现在部分安卓手机下(如小米)还是没反应,原来简单的 schema 跳转水这么深的,于是百度谷歌了一下,找到了下面两份关键材料:
H5唤起APP进行分享的尝试
AlanZhang001/H5CallUpNative: H5端唤醒移动客户端程序
看源码也不多,总结下来,因不同系统和浏览器对 schema 规范的理解不同,还有一些商业因素,不同环境下面需要用不同的方式进行跳转,甚至有的环境你根本就跳不了。
时间紧,任务重。简单处理吧,不同方式都来一遍,谁好使就用谁。所以简单总结了下,能用的几种方式:
location 跳转
a 链接跳转
iframe 跳转
以上三种方式,逐一试用,最后实在不行就不行吧,简单处理,看有没有大神补充的。
是直接一进来就执行,还是事件触发,都可以。或者是一开始进来就执行,失败了显示几个可选跳转按钮让用户手动触发跳转。
但是关键问题还有一个,如何判断是可以成功唤起了呢?可以参考网址接口一键生成:[](https://www.jumpwx.com/)https://www.jumpwx.com/ 代码里提到了一个根据页面hidden 状态,但不够精准,如果用户没有选择跳转到微信呢?这是另一个需要深究的问题。
出于时间考虑,先以业务交付优先,如果有朋友知道的也可以一起讨论下。
另行文时间短,以技术交流为主,若有瑕疵,欢迎指出。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。