H5浏览器唤醒打开“chrome”App,网页想要打开“xxx”

1,042 阅读1分钟

最近在做一个H5网页,实现h5网页打开提示需要打开某某App,效果如下:

Snipaste_2024-04-25_14-33-42.png

H5唤醒App的方法有好几种,如下:

  • URL Scheme(通用)
  • Universal Link (iOS)
  • App Link、Chrome Intents(android)

URL Scheme

这种方法用的人比较多,兼容性也很好,它一般由协议名、路径、参数组成。

[scheme:][//authority][path][?query][#fragment]

常用App浏览器的URL Scheme例如:

//UC浏览器 
ucbrowser://
//QQ浏览器 
mttbrowser://
//Chrome谷歌浏览器 
googlechrome://
//QQ浏览器:
qq browser://
//猎豹浏览器:
sinaweibosso.422729959://
//百度 
baiduboxapp:// 或 BaiduSSO://

常用应用App的URL Scheme例下,如果想查找更多App的URL Scheme可以跳转到这个地址

//微信
weixin://
//支付宝
alipay://
//QQ
mqq://
//淘宝
taobao://
//钉钉
dingtalk://
//拼多多
pinduoduo://
// 等等...

使用方法也很简单:

// 可在后面添加路径地址,参数等
window.location.href = 'googlechrome://'
// 也可以使用 a标签
 <a href="googlechrome://">打开APP</a>

但我在使用googlechrome://的时候发现无法正常使用,后面查了些资料,可能有一些浏览器是会有白名单限制的,如要跳转到chrome的App的话,可以尝试使用下面的方法!

Intent语法

var url = window.location.href  // 获取当前的url地址
var newUrl = url.replace(/^https:\/\//, '')  // 进行截取 https:// 后面的链接参数
var intentUrl = `intent://${newUrl}#Intent;scheme=https;package=com.android.chrome;end`; // package 打开的应用
window.location.href = intentUrl; 

案例:实现h5移动端网页,访问的浏览器不在chrome浏览器的时候,提示网页想要打开“chrome” App。

function goUrlRef() {
  var isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);

  if (isMobile) {
    var userAgent = navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('Chrome') >= -1) {
      console.log("您正在使用谷歌浏览器!");
      // 直接跳转到下载链接
    } else {
      getCurrentUrl()
      console.log('不是谷歌浏览器,进行提示跳转!');
    }
  } else {
    console.log("您当前使用的是PC设备!");
  }
}

function getCurrentUrl() {
  var url = window.location.href;
  var newUrl = url.replace(/^https:\/\//, '');
  var intentUrl = `intent://${newUrl}#Intent;scheme=https;package=com.android.chrome;end`;
  window.location.href = intentUrl;
}

goUrlRef()

如有帮助到你,不妨点个赞,后续有问题将继续补充~