前言
在日常生活中,想必大家一定遇到过这种,“打开xx软件阅读全文”
但是,你有没有想过一个问题,为什么你点击这个选项后自动跳转到对应的APP后打开的还是这个页面呢?
是点击后发生了什么奇妙的反应吗?
这一切,都要从今天的主角——URL scheme来说起
什么是URL scheme?
想要了解URL scheme,我们就要先知道URL scheme是什么东西。
我们可以把URL scheme理解成一个特殊的链接,但是这个链接特殊的是,它并不是用于打开新的web网页,而是专门设计来与应用程序进行交互的。
比如下图,哔哩哔哩想让我们点击下方跳转到哔哩哔哩来看这个视频,那我们点击后就会触发的URL scheme是
代码语言:txt复制bilibili://video/av或bv号
这是什么意思呢?
我们可以将这段特殊的链接理解成
代码语言:txt复制[scheme]://[host][/path][?query_string][#fragment]
其中,scheme是URL scheme的名称,比如我们上面哔哩哔哩的就是bilibili
剩下的四个均为可选选项
host
:可选,可以用于区分应用程序的不同部分或服务。path
:可选,用于指定应用程序内的具体资源或操作。query_string
:可选,用于传递参数。fragment
:可选,用于指向资源中的特定部分。
理解了这些,我们似乎也能看懂上面哔哩哔哩的那个url scheme了
首先是调起哔哩哔哩程序,然后告知是视频中的某一个视频
大致理解了url scheme,你知道他在我们生活中有哪些应用吗?
URL scheme在生活中的应用
其中url scheme在生活中的应用十分广泛
例如我们看到的每一个广告,都会说什么点击视频下面链接打开xx软件购买或者是抢购
实际上他就是通过url scheme进行跳转的,点击后自动跳转,实现无缝衔接,这也是url scheme的魅力之一
除了广告,还有我们经常用到的支付场景
当我们在京东淘宝拼多多或者是其他电商平台又或者是其他需要进行支付的平台,我们默认都会自动跳转到微信支付或者是其他的,这里面就用到了url scheme。
url scheme的应用也不止于此
还有例如一键拨打电话啊,一键分享,打开相对于app等功能,在日常生活中可谓是随处可见
我可以自己写一段代码调起其他APP的url scheme吗
面对这个问题,我的回答是——当然可以!
我们这里以微信为例,假如我想要其他人点击这个文本超链接自动打开微信APP要怎么做呢?
首先我们先写一个a标签,重点是href里面的内容,将他修改成微信APP的url scheme就行了
比如下面这样
代码语言:txt复制<a href="weixin://">打开微信</a>
我们就会得到如下的一个超链接,当我们在手机端点击后会自动跳转到微信APP
然后,我们再举一个例子
这个是我最近用ai写的一个简易的跳转哔哩哔哩的
代码语言:txt复制<?php
// 获取URL参数
$link = $_GET['link'] ?? '';
// 检查是否提供了link参数
if (!empty($link)) {
// 修正可能的路径问题,移除前导斜杠
$link = ltrim($link, '/');
// 对link参数进行验证,确保安全性
// 假设link是B站视频ID,如"av123456"或"BV1xx411c7sB"
if (preg_match('/^([a-zA-Z0-9] )$/', $link)) {
// 构建哔哩哔哩的URL scheme
$bilibiliScheme = 'bilibili://video/' . $link;
// 使用Location头重定向到自定义URL scheme
header('Location: ' . $bilibiliScheme);
exit;
} else {
// 如果link参数格式不正确,显示错误信息
echo 'Invalid link parameter provided.';
}
} else {
// 如果没有提供link参数,显示错误信息
echo '请使用正确格式访问';
}
?>
假设我们的域名是xx.com,当我们访问这个文件的时候的格式应该是xx.com/?link= av或bv号
当我们进行访问后,我们就会自动跳转到哔哩哔哩APP内打开对应的视频
有什么用呢?当我们在一些论坛发布消息的时候,想要用户获得一个更好的观看视频体验的时候就可以让他通过点击这个链接跳转到app内观看,这样就节省了很多的步骤,也节约了大量的时间。
其他APP的url scheme
通过上述内容,你大概也url scheme有了一个大概的理解,也应该了解怎么在html中加入url scheme来进行跳转。
这时候你可能就会好奇了,其他软件的url scheme要去哪里找呢?
不用急,在github上早就有大神为我们整理好了,我们只需要照搬,就可以解决很多问题了
https://github.com/shelken/Url-Scheme
大家可以参考一下