实际上那些列表中的 URL Schemes 你都可以自己找到,那些你在用别人没在用的应用的 URL Schemes 也同样可以找到。
希望通过这篇文章,让大家基本了解什么是URL Schemes以及如何查找URL Schemes。
注:文中会提到使用 FastOpen应用的例子,这是一款支持范围非常广的免费Launcher软件,最重要的是支持自定义添加URL Schemes。感兴趣的朋友可以自行前往App store下载。
什么是URL Schemes?
URL,我们都很清楚,http://www.apple.com 就是个 URL,我们也叫它链接或网址;
Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com 这个网址的 Schemes 是 http。
根据我们上面对 URL Schemes 的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的 URL 的 Schemes 部分,也就是开头那部分。比如短信,就是sms:
你可以完全按照理解一个网页的 URL ——也就是它的网址——的方式来理解一个 iOS 应用的 URL,拿苹果的网站和 iOS 上的微信来做个简单对比:
但是,两者还有几个重要的区别:
- 所有网页都一定有网址,不管是首页还是子页。但未必所有的应用都有自己的 URL Schemes,更不是每个应用的每个功能都有相应的 URL Schemes。几乎没有所有功能都有对应 URL 的应用。一个 App 是否支持 URL Schemes 要看那个 App 的作者是否在自己的作品里添加了 URL Schemes 相关的代码。
- 一个网址只对应一个网页,但并非每个 URL Schemes 都只对应一款应用。这点是因为苹果没有对 URL Schemes 有不允许重复的硬性要求,所以曾经出现过有 App 使用支付宝的 URL Schemes 拦截支付帐号和密码的事件。
- 一般网页的 URL 比较好预测,而 iOS 上的 URL Schemes 因为没有统一标准,所以非常难猜,通过猜来获取 iOS 应用的 URL Schemes 是不现实的。
基本URL Schemes
基本 URL Schemes 的能力虽然简单有限,但使用情境却是最普遍的。
我所谓的基本 URL Schemes,是指一个 URL 的 Schemes 部分,比如上文提到的微信的weixin:。这个部分的唯一功能,就是打开相应应用,而不能够跳转到任何功能。
绝大多数所谓支持 URL Schemes 的应用,一般都是只有这么一个部分,它一般是这个应用的名称,比如微信这款应用,它的基本 URL Schemes 是 weixin://。
但是,我前面提过了网页 URL 和 iOS 应用的 URL 的三个重要区别,其中第三项,就是 iOS 上的 URL Schemes 并不规范,一个应用的 URL 可以是各种各样的:
- Coursera 的 URL 是:coursera-mobile:
- Duet 这款游戏的 URL 是:x-kumo-duet:
- Monument 这款游戏的 URL 是:fb690517270143345:
- 扇贝新闻的 URL 是:wx95962d02b9c3e2f7:
它们目前并没有统一的规则,所以猜测一个应用的意义并不太大,你可以试试,但不要过于指望这种方式。下文会提到如何查找一个应用的基本URL Schemes,只要那个应用支持 URL Schemes 就能找到。
如何查找URL Schemes?
了解了URL Schemes的基本概念,一个重要的问题摆在我们面前——去哪找这些 URL Schemes?
其中,基本URL Schemes 是可以由你自己手动查询的,所有支持基本 URL Schemes 的 App 都可以用以下方法查到其基本 URL Schemes。而其它几种 URL Schemes 因为是写进代码中的,需要查询各 App 的文档,来参照例子根据自己的需求制作 URL。
查找基本 URL Schemes
自己查询url的办法是用文件管理器打开每个应用的应用名.APP子文件夹下的info.plist文件,找到CFBundleURLSchemes字段就可以在下方找到了。未越狱推荐使用pc端软件itools完成。
首先,在 iTunes 找到你想用 URL 打开的 App,右键选择在文件夹中显示。
然后把这个文件复制到桌面上解压(或者其它地方,总之不要直接在原文件夹解压):
解压完毕后,在解压出的文件夹中,找到文件:
然后选择显示包内容。
找到 info.plist 这个文件,用你电脑里能打开它的 App 打开它。
然后查找 URL Schemes:
在 CFBundleURLSchemes 下的那两行就是该 App 的基本 URL Schemes 了。
如果越狱后,可以用 iFile 或 Filza File Manager 这样的文件管理软件,进入路径:
/var/containers/Bundle/Application
找到你想要用 URL Schemes 打开的 App,进入下一级文件夹,搜索 info.plist:
最后用文本编辑器打开 info.plist,在其中搜索 URL Schemes 即可。
本质上,如前文所说,两者是一种方法,区别仅是越狱后查询的灵活度变高,你随时可以看看自己新装的 App 的 URL Schemes 是什么。如果你像我一样基本使用 FastOpen 代替主屏的话,这种灵活性还是需要的。
查找复杂URL Schemes
上面介绍的是基本URL的查询方法,但是很多复杂的URL Schemes 是写入代码中的,无法通过查询 .plist 文件来获取。这时,你只要搜 App 名 URL Schemes,一般就能找到该 App 的 URL Schemes 文档页面。同时,直接去这些 App 的官网查找相关网页也可以。
对于大多数不太明白URL Schemes的用户来说,掌握了基本URL Schemes的查找方法就足够了,更多复杂的URL Schemes可以借助一些应用来自动添加。除去那些大名鼎鼎的Launcher软件,其实还有很多很好用但却被人忽视的应用。比如这款FastOpen。它几乎涵盖了所有支持第三方启动的应用,甚至连支付宝转账、蚂蚁花呗、微信扫一扫这样的特定功能都可以自动识别,不需要用户自定义添加URL Schemes,可以说是我目前用过的支持应用最全的一款。
URL Schemes地位受挑战?
在3D Touch和siri相继出现后,URL Schemes的地位似乎受到了挑战。
但是,3D Touch 和 URL Schemes 有极大的区别:一些复杂 URL Schemes 的功能 3D Touch 没有涵盖,反过来 3D Touch 也有一些可以做到的事通过复杂 URL Schemes 做不到。
之前介绍类似FastOpen这样的Launcher软件时,有朋友回复我:用siri就可以做到。确实,我每天也用siri很多次,但我觉得它和我正在用的FastOpen,两者是不同的,互相不可替代的。Siri通过语音交流,你需要对着它说话,而且有时识别会出错,在周围有人的情况下会显得尴尬。但是使用launcher,直接在通知栏添加快捷键,则更为方便快捷。
所以,虽然苹果的各项改进使得URL Schemes已无往日辉煌,但它在 iOS 上的效率方面的作用暂仍然无法被取代。效率工具有两个核心:减少时间浪费和在工作的时间集中注意力。通过 URL Schemes 完成的自动化动作同时做到了这两点:它减少操作步骤,从而减少时间浪费;避免在桌面和 App 内的层层寻找,直达功能,从而减少了干扰。
本文版权归www.fastopen.net所有,转载请保留原文地址(http://www.fastopen.net/index.php/2017/01/16/url-schemes-introduction/)。欢迎下载FastOpen软件。