前言
iOS URL Scheme是Apple提供的一个很好用的机制,通过这一机制可以做很多你想到以及想不到的事。怎么?你不相信?不相信也不要着急,这一集我们先从基本走近iOS URL Scheme,掀开她的神秘面纱。
URL Scheme系列文章
你不知道的iOS URL Scheme之基础篇(一)
你不知道的iOS URL Scheme之deeplink篇(二)
你不知道的iOS URL Scheme之唤起劫持篇(三)
URL Scheme是什么
认识URL Scheme之前,我们想起了我们的老朋友URL。说起老朋友,我们又怎么能不去叙叙旧呢?说叙叙旧,咱就叙叙旧。
URL
URL(Uniform Resoure Locator:统一资源定位器),也就是我们熟悉的“网址”,通过URL可以访问相应的服务和资源,并且URL可以传递相应的参数。URL地址格式排列为:
scheme://host:port/path?query
举例如下:
https://www.apple.com/hk/en/iphone/
这个URL网址对应的Scheme就是https,可以理解为遵守相应的协议。
详解URL Scheme
定义
Scheme一般用来表示协议,比如 http、https、ftp 等,URL Scheme的字面意思理解就是地址协议。
组成
一个完整的 URL Scheme 应该分为 Scheme、Action、Parameter、Value 这 4 个部分,中间用冒号( :)、斜线 (/)、问号 (?)、等号(=)相连接。举个例子:
alipay://open?page=payPage&title=pay
它对应的4部分就是如下所示:
- Scheme(头):alipay
- Action(动作):open
- Parameter(参数): page、title
- Value(值): payPage、pay
不同部分之间用符号相连,它们也有一定的规则(和URL部分规则是一样的):
- 冒号(:):在链接头和命令之间;
- 双斜杠(//):在链接头和命令之间;
- 问号(?):在命令和参数之间;
- 等号(=):在参数和值之间;
- 和符号(&):在一组参数和另一组参数之间。
访问流程
在移动端Safari浏览器输入以上示例网址就会提示你 在"支付宝"中打开链接吗?,然后由你选择”取消”或”打开”。和HTTP协议格式的URL访问流程进行对比,iOS URL Scheme实际上就是启动一个应用的 URL,其访问流程是这样的:
浏览器输入网址 -> iOS识别URL Scheme -> 询问是否跳转到支付宝 -> 确认跳转 -> 从浏览器跳转到支付宝应用 -> 在应用中解析URL -> 执行open操作 -> 传递动作所需page和title参数
iOS如何识别URL Scheme
iOS官方要求的是APP开发者需要自定义APP的”URL Scheme”,只有APP本身定义(支持)了URL Scheme,iOS才会去识别然后跳转。iOS系统内置的App,如mail、电话和信息等等,都有相应的URL Scheme供其他的App调用。
URL Scheme的作用
由于Apple选择沙盒来保障用户的隐私和安全,App只能访问自己的沙盒,但同时也阻碍了应用间合理的信息共享,所以苹果提供了一个可以在App之间跳转的方法:URL Scheme。通过该方法,可以实现本APP被第三方APP访问唤起以及APP之间的数据传递等功能,这些应用会在后续文章中详细介绍,大家敬请期待吧。