首页 > 学院 > 开发设计 > 正文

URL Schemes入门指南

2019-11-09 14:30:37
字体:
来源:转载
供稿:网友

想要更好地使用IOS 系统,对URL Schemes有一定了解是必须的。但因为 URL Schemes 的使用方式相对复杂,导致多数用户难以理解。而且大多数目前正在使用 URL Schemes 的人并不具备自己编写符合自己使用情境的 URL Schemes 的能力,他们通常是在网上搜索想要的URL Schemes,一来费时费力,二来不容易找到或者正确率不高。

实际上那些列表中的 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软件。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表