如何找到软件的URL Schemes?

iOS有一种相对来说不太为人知的打开软件甚至直接执行软件某项操作(比如直接打开Twitter的发信息界面等)的方法,就是通过这个软件的URL Schemes来直接打开或者执行操作。 具体地举个例子,比如你在Safari浏览器(只能Safari)的地址框,输入

twitter://post?messages

然后确定,你就会直接打开Twitter这个软件并且直接进入发新推的界面(现在就试试呗)。

Launch Center Pro等软件就是基于这个原理工作的。 在之前通过系统的URL Schemes甚至可以做到直接打开关闭Wifi等系统设置上的操作。只是后来苹果将这方面功能屏蔽了,所以现在此类的软件就只能做到打开软件,或者执行某项软件的操作了。力道大减。 那么这个URL Schemes我们应该怎么获得呢? 我把它分为两个部分,

一.用于打开软件的URL Schemes

这个是非常容易的。所有软件都可以直接做到。 大家根据刚才的twitter的URL Schemes就能看出来,它的格式是"软件名://"这样的。 所以理论上,我们可以在safari浏览器输入任何软件的名称后面加个冒号和两斜杠来打开软件,比如说输入

Music://

然后确认,就会直接跳转到音乐。(再试试呗) 但是,当你想尝试你最想尝试的微博的时候,输入

Weibo://

然后确认,你会发现,这不好使。why? 因为新浪微博的真实的软件名不是这个Weibo,而是sinaweibo所以通过URL Schemes打开软件虽然容易,但是问题就在于去哪搞到正确的软件名。 在iOS设备上操作的办法需要越狱,因为用到iFile: 第一步:打开iFile,在列表里选择“应用程序”,或者进入路径进入

/var/mobile/Applications

如果你看到的是乱码,就在设置里将“应用程序名称”这个选项打开:

然后找到你想要的软件,比如说我现在要找“微博HD”:

URL Schemes当然不可能有中文,所以我们需要点开这个“微博HD”的文件夹,就会看到WeiboHDPro.app:

接着点开WeiboHDPro.app,找到“info.plist”:

用文本编辑器打开这个”info.plist”,并搜索“CFBundleURLSchemes”:

下面的就是这个软件的URL Schemes,确切地说微博有两个。 我们把这两个中的任何一个复制下来,再粘贴到Safari里,后面加上冒号和两个斜杠,即

sinaweibohd://

再按输入,就直接可以跳转到新浪微博里了。

另,在电脑端操作的办法不需要越狱,直接用第三方文件管理软件按照上述路径找到info.plist文件然后搜索“CFBundleURLSchemes”,找到URL Schemes就可以了。

二.用于直接执行某款软件的某项操作的URL Schemes

文头提到的:

twitter://post?messages

就是一个这样的例子。 你在Safari的地址栏输入这条URL,它不仅会帮你打开Twitter这个软件,而且进入的时候就是输入新信息的界面。这个是很方便的,而且再通过一些URL,你甚至可以做到预设好内容。这样你在Safari输入那条URL的时候,不仅会打开twitter、直接进入发送新消息的界面,而且里面已经有了内置的内容。 这虽然听起来不错,但是URL却不是我们可以找到的。 因为每个软件都可以按自己的方式去设定URL (LaunchCenterPro的开发者给其它开发者出了一个简易的为自己的App增加URL Schemes的教程)。

不过我们可以按照自己的想法去猜猜某些软件的URL。因为我们看那条Twitter的URL,发送新消息的界面就是”post?messages“,别的发布新消息的URL有可能是也有可能不是这样,但总归是和“新消息”、“发布”等单词有关的单词,总不会说微博发布新消息的URL是:

sinaweibo://shit

我猜出来了一个Byword的URL,是直接打开并创建新文本的URL:

byword://new

要猜出来所有你想要的App的执行动作类的URL确实没那么简单,不过很多开发者会在自己的主页公布自己软件的URL,Tweetbot的就非常全面

当然也不是所有的软件的作者都有公布,因为有的软件作者可能软件里都没有这种类型的URL,那就没戏了。

handleOpenURL总结了相当多的可用的URL Schemes,不过不怎么有国产的软件,大家可以直接搜索。如果你找到了或者搞到了这个网站上没有的URL Schemes,你还可以直接提交给这个网站。造福后来人。