admin管理员组

文章数量:1532180

2024年3月13日发(作者:)

项目演示

由于苹果的app都是在沙盒中,相互是不能访问数据的。但是苹果还是给

出了一个可以在app之间跳转的方法:URL Scheme。简单的说,URL Scheme

就是一个可以让app相互之间可以跳转的协议。每个app的URL Scheme都是

不一样的,如果存在一样的URL Scheme,那么系统就会响应先安装那个app的

URL Scheme,因为后安装的app的URL Scheme被覆盖掉了,是不能被调用

的。

URL Schemes 的发展过程可以说就是 iOS 效率工具类 App 的发展过程。

起初的苹果建立的 Apple URL Schemes 只是用于自用,里面只有邮件、电

话、iTunes 搜索、Youtube 视频等一些内置服务的 URL。

个人认为 URL Schemes 第一次大火是在 2011 年末(如有异议欢迎指

正),那个时期也是越狱的鼎盛时期,那个时期越狱后大家都会装的一个插件

是 SBSettings[1]。越狱的人都知道每当新系统发布的时候,等待新系统的越狱

发布是最撩人的,而这段时期那些「不越狱就能做到某种越狱功能」的应用经

常一时间风头无两。

2011年 iOS 5 发布带来了通知中心,没过多久,出现了一大批使用 iOS 系

统设置的 URL Schemes 的 App 神奇地完成了接近 SBSettings 的功能——它们可

以让我们从通知中心直接跳转到某些 App 的特定界面,比如 Twitter 的发推界

面。它们甚至还可以直接跳转到系统设置里的 Wi-Fi 选项。在这一批 App 中,

就有如今效率软件霸主之一 Launch Center Pro 的前身——Launch Center。

但很快,这一批 App 被苹果火速下架,原因是「对通知中心的误用」。模

糊的解释让开发者们摸不到头脑,这种不满一直延续到 Launcher 在 iOS 8 之后

的下架事件。

总之,在这一批 App 被下架之后,玩票的都离开了,只留下了一个 Launch

Center。作者似乎觉得 URL Schemes 大有可为,所以在不触碰红线(当时的红

线是一不许动通知中心,二不许调用系统设置的界面)的基础上继续发力,在

几个月(2012年7月)之后推出了 Launch Center Pro v1.0。

另一个注意到 iOS 上的 URL Schemes 的作用的是 Drafts 的作者 Greg

Pierce。不同于 Launch Center Pro,Greg Pierce 打造的是一个以输入文字为主的

效率应用,它以一个笔记本的面目示人,所以被媒体称为「Launch Center for

text」。

两者大的区别在于先选动作还是先输入。Launch Center Pro 的使用方法

是:先打开动作,如果需要输入的话,你可以让它跳出来一个输入框,你来输

入,输入完成后跳转到相应应用。Drafts 则是先在笔记本里把东西输入了,然

后再选择动作,跳转到相应应用。

好像没什么大不了的嘛……吗?这里至少有两个重要的区别:

Drafts 中输入过的内容会储存在笔记本中以留作备份,而 Launch Center Pro

里的则是动作运行完了就没了。Drafts 中输入过的内容可以通过 URL Schemes

进行多次使用或一次性发给多个应用或服务,而 Launch Center Pro 只能将输入

内容发送到一个服务或应用。即除了剪切版外, Launch Center Pro 没有其它变

量的概念。第三个区别不太重要:Launch Center Pro 里的输入框和 Drafts 的笔

记本界面来比较很明显不是一个好的写作环境。细节上的区别还有很多,两者

适用的范围随着各自的发展扩大,因此重合的那部分功能也愈发的不起眼。

Launch Center Pro 和 Drafts 从那以后成为效率类应用中的双雄,不断提出更多

更灵活使用 iOS 上 URL Schemes 的办法。

比如 Launch Center Pro 提出了 List 的概念,将列表的想法融入到了 URL

Schemes 中,列表的每一项可以是简单的字符,又可以是一串新的复杂的

URL。使用列表可以让我们每次的输入变为更轻松的选择,对于那些重复的任

务更为高效。

而 Drafts 的作者直接不满 URL Schemes 只能跳出不能跳回的问题,和

Marco Arment、Justin Williams 等人开发了 x-callback-URL 来做到跳出,并跳回

这样的动作。

可以说这两款 App 对 URL Schemes 的推广和使用构思上的贡献是最突出

的,现在 URL Schemes 越来越被 iOS 用户和开发者所重视,在我眼里,一款

App 是否完整系统地支持 URL Schemes 已经是判断它是否优秀的标志之一。

故事讲到这里,更重要的还是如何使用 URL Schemes。

故事里没有提到 Pythonista、Editorial 跟 Workflow,绝不是我认为这些 App

不够腕儿,而是它们做的事情重点已经不在于 URL Schemes 了。

那么app之间的跳转有什么作用呢?我们所使用的每一个app就相当于一

个功能,app的跳转可以使得每个app就像一个功能组件一样,帮助我们完成需

要做的事情,比如三方支付,搜索,导航,分享等等。

1、首先在中添加一行,选择URL types,效果如下图所示:

2、在展开的Item 0中填写URL identifier,这个用来唯一标识用户自定义的

URL Scheme,推荐使用域名的反转形式,如: shenzoom

3、在Item 0中添加新的一行,选择URL Schemes

4、展开URL Schemes,在Item 0中输入自定义的Scheme的名称。在这里

只需要输入自定义的Scheme的名称即可,不需要加上://,例如这里输入的是

fb0548,那么对应的自定义的URL就是fb0548://,这里

可以输入多个。5、最后一个完整的示例效果图:

1、在Safari中使用在Safari中直接在浏览器的地址栏中输入即可启动刚才

的应用

2、在其他的应用程序中使用在需要调用的地方使用下面的代码即可实现调

NSString *customURL=@"shenzoom://";

[[UIApplication sharedApplication] openURL:[NSURL

URLWithString:customURL]];

NSString *customURL=@"";

[[UIApplication sharedApplication] openURL:[NSURL

URLWithString:customURL]];

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL

*)url

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url

sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

解析

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url

sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

if ([sourceApplication isEqualToString:@"eme"])

{

NSLog(@"调用的应用程序的Bundle ID是: %@", sourceApplication);

NSLog(@"URL scheme:%@", [url scheme]);

NSLog(@"URL query: %@", [url query]);

return YES;

}

else

{

return NO;

}

}

苹果的各项改进一点点蚕蚀了 URL Schemes 的领域,但目前宣告 URL

Schemes 死刑还为时尚早。

6s 之后的设备大概都会支持 3D Touch,它的特征之一就是从 Homescreen

的 App 图标上直接进入该 App 的具体某个功能了。这个功能也让很多人兴奋了

一把,虽说会用 URL Schemes 的人早就做到类似的事了。不过,既然官方已经

有了这样的功能,为什么还要用 URL Schemes?

同样,在 iOS 9 中,我们还可以用 Siri 建立关于 App 的提醒事项,来做到

以前只有用 Launch Center Pro 和 Due 这样的 App 才能做到的定时打开 App。而

且 iPhone 6s 还可以做到不在充电状态下使用 Hi, Siri 这样我们要建立一个提醒

事项或者闹铃也无比简单,只要说一声「Hi, Siri. 半小时以后叫我。」就能定一

个计时器。在这种比较之下 Due 这样的 App 的作用显然是被大大地削弱了。除

此之外还有通知中心部件,Sharesheet 的出现都在一定程度上代替了 URL

Schemes 的作用,削弱了其价值。 但按照目前的状态,充其量只能说 URL

Schemes 在衰败,还远不能宣判其死刑。

本文标签: 跳转使用输入应用界面