iOS平台的进程间通信是一件很蛋疼的事,通过窝大量的资料搜索,最后发现好像比较普遍的实现方式则是使用URL Scheme(好吧好像别的方式我还没搞懂,准备看英文文献学习学习先哈哈哈哈哈)。
URL Scheme就是将一个应用自身“绑定”到一个自定义的URL上,该Scheme可以用于在浏览器或别的应用中启动。PS:一个应用是可以自定义多个URL Scheme的。
一、注册自定义的URL Scheme
首先我们在工程项目的Info.plist文件中添加以下信息。URL identifier
一般推荐使用倒置域名方式以确保唯一性。而Scheme是一个数组,所以我们可以设置多个Scheme,之后我们会测试的。
当然我们可以看一些生成的源码。
1.1 URL Scheme启动应用初尝试
通过上一步在Info.plist文件里配置了应用的URL Scheme之后,Build并Run一下应用。当应用被安装到模拟器上之后。我们则可以首先尝试用Safari来启动我们的应用了。
步骤:
1. 运行以上应用。
2. Shift+Command+H返回模拟器主界面。
3. 然后打开Safari。
4. 输入urlSchemeOne://
,并点击确定。
5. 就会弹出如下图,点击Open。然后我们的应用就打开了!
有兴趣的童子试试urlSchemeTwo://
也是可以打开应用的了,并且实际上URL Scheme是大小写不敏感的?= =因为我在safari中全输入的小谢也能打开。。。
1.2 在另一个app中启动自定义URL Scheme
此时我们创建另一个工程,只需要实现一个功能,就是启动我们刚才设定了自定义URL Scheme的app。所以我们在里面设置了一个按钮。当我们点击该按钮时,则会触发打开URL Scheme的事件。首先我们来看一下代码的实现。
AppToOpenURLScheme
- (IBAction)openUrlScheme:(id)sender
{
NSURL *url = [NSURL URLWithString:@"urlSchemeOne://"];
//先判断一下是否可以启动该url
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
else