以前写过一篇文章「把URL五马分尸」,里面介绍了URL的Scheme,http://、https://分别表示普通的http链接和加密的http链接,它们都是标准的协议头。如果我拼接一个自定义Scheme的URL,如weixin://dl/scan,会产生什么样的效果呢?
首先,我们在桌面浏览器中打开,它是没有任何反应的,在Chrome中会触发搜索“weixin://dl/scan"这个关键词。然后用手机上的浏览器打开它,那就有神奇的效果了,它调起了微信的扫一扫功能,这是怎么回事呢?
这个还要先从iOS说起,由于iOS系统设计的沙箱保护机制,应用间不能相互直接调用,比如说你手机上的微信就不能直接调起淘宝。不过苹果并没有完全把路堵死,在iOS上提供了URL Scheme调用的方式,每个应用都可以注册标识自己的URL Scheme,其它应用可以通过这个URL Scheme调起你,同时还可以在URL中附带一些信息传递过来,在被调起后做不同的响应。
比如微信就有自定义的URL Scheme weixin://,如果你在Safari中输入这个地址,它就可以直接把微信App打开了,如果在URL后面加上“dl/scan”这个额外信息,就是告知微信,打开后,切换到扫一扫界面。
部分国产App的Scheme如下:
QQ mqq://
淘宝 taobao://
点评dianping://
微博 sinaweibo://
支付宝alipay://
美团 imeituan://
在Android上面,应用间的调用有多种方式,不过URL Scheme调用也是属于其中的一种,同样的,开发者需要先向系统注册一个Scheme,然后处理收到调用URL后的逻辑。
很多产品都同时有网页版和终端Native版本,其中网页版通过分享等途径流传比较广泛,而Native版本往往是功能更加齐全。
很多产品同学都会想到,使用网页版引导用户时,然后趁机调起他终端设备上的Native版本,不就完美了?在这个时候,URL Scheme就可以派上用场了,因为网页本身是无法调起应用的,但是从网页中,打开一个自定义URL,系统浏览器会检查是否有应用来注册了对应的Scheme,如果有的话,就会直接调起相关应用,同时利用URL中附带的信息,在本地应用中还原用户的浏览场景。
说了这么多,还动手体验一下吧,在浏览器中打开下面的网址,试试能否从网页中调起你的微信扫一扫功能?Android和iOS都可以试试喔
登录 | 立即注册