开发

宿主扫码直接调起小程序

功能说明

小程序二维码内容为 http 链接,形式有长路径链接 和短路径链接两种;

小程序二维码内容

  1. 小程序有效域名的正则表达式:
    http[s]?:[\/]{2}(.*baidusmartapps.com|.*baidusmartapps.cn|.*baiduminiapps.cn|mbd.baidu.com)
  2. 长路径链接 path:
    /ma/qrcode/parser
  3. 短路径链接 path:
    /ma/s/*

小程序二维码示例

  1. 短链示例:
    https://mbd.baidu.com/ma/s/WbnvNH5g
  1. 长链示例:
    https://mbd.baidu.com/ma/qrcode/parser?app_key=4fecoAqgCIUtzIyA4FAPgoyrc4oUc25c

开源宿主直达小程序方案

二维码打开小程序过程:

  1. 判断二维码内容是否为小程序,有调用 api 和 客户端自己实现两种方案,在第二部分介绍;

  2. 请求二维码中的链接时,header中携带User-Agent,User-Agent中需要包含在开源宿主平台申请的hostname,包含方案为 hostname 前加 swan-前缀:swan-${hostname};

  3. 二维码中的链接会自动302到宿主schema的小程序链接;

二维码内容判定为小程序的方案

  1. 正则匹配小程序长链和短链结果,同时请求时候需要在header User-Agent包含: swan-babybus
  2. 打开链接,自动302
    babybus://swan/VPVEGwD6qIknxHR6REO5isIxdSfDcV7T/src/pages/health-code-mine/index?color=green&_baiduboxapp=%7B%22from%22%3A%221180000000000000%22%2C%22ext%22%3A%7B%7D%7D&callback=_bdbox_js_275&upgrade=0
  3. 得到调起协议结果后,将调起协议放入SwanAppLaunchHelper.launch(String uri)接口中,小程序框架会进行调起小程序的操作