作者
novlan1
2025.9.15
通过 Scheme 打开小程序
1. 背景
Android 系统不支持直接识别 URL Scheme,用户无法通过 Scheme 正常打开小程序,需要使用 H5 页面中转,再跳转到 Scheme 实现打开小程序。官方文档地址在这里。
2. 解决方案
这里直接将 html
上传到 COS 上了,然后通过 CDN 链接获取。拼接链接如下,
https://image-1251917893.file.myqcloud.com/igame/html/auto-scheme-mp.html?scheme=${encodeURIComponent(scheme)}
真实例子:
https://image-1251917893.file.myqcloud.com/igame/html/auto-scheme-mp.html?scheme=weixin%3A%2F%2Fdl%2Fbusiness%2F%3Fappid%3Dwxd974aca5aa25ee3b%26path%3Dviews%2Fgame-detail%2Fgame-list-new%26query%3Dsiteid%253DJFun5xACtf59myYV2aTXYw%26env_version%3Dtrial
好处是:
- 不与任何业务耦合,任何业务都可以使用
- 性能佳,在
html
内置了跳转逻辑,不需要加载额外的js
文件
3. 校验
2025.9.20 更新
对参数进行了校验,排除:
- 非小程序
scheme
的 URL 链接 - 不在白名单的小程序
测试:
- Open Redirect: https://image-1251917893.file.myqcloud.com/igame/html/auto-scheme-mp.html?scheme=https%3A%2F%2Fevil.com
- XSS: https://image-1251917893.file.myqcloud.com/igame/html/auto-scheme-mp.html?scheme=javascript%3Aalert(1)%3B
- 有效: https://image-1251917893.file.myqcloud.com/igame/html/auto-scheme-mp.html?scheme=weixin%3A%2F%2Fdl%2Fbusiness%2F%3Fappid%3Dwxd974aca5aa25ee3b%26path%3Dviews%2Fgame-detail%2Fgame-list-new%26query%3Dsiteid%253DJFun5xACtf59myYV2aTXYw%26env_version%3Dtrial