首先很感谢大家能有来看我的博客。
在学习有关这部分的起因是因为本来想做一个重启的小demo,设想:如果App1能再自己中打开App2,那么App1打开自己是不是就能打开自己了呢。后来就简单的去实现了一下,结果失败了,有同样想法的就放弃吧,但是这个跳转觉得还是有一定用途的,为了以后方便自己和大家,简单的记录一下,下面进入正题。
最开始,首先要为自己的应用注册一个自己的URL(因为一会儿要调用openURL:的这个方法,这个很关键)。下面是注册自己URL的方法。
我们都知道,当生成一个项目的时候,XCode会为我们生成很多文件,其中有一个叫 XXX-info.plist的配置文件(XXX为你的工程名)。打开这个配置文件,右键点击空白处,选择Add Row添加一个新的一行(确定点击了InformationPropertyList因为我们要在他下面添加一个新的一行)。
将这行的名字改为URL types,然后点开Item 0,在Item 0会默认生成一个Key值为URL identifier,可以是任何值,但建议用“反域名”,说到这里我也不太明白怎么回事,但是可以确认的是URL identifier内容不影响实现。。,
在Item 0下在添加一个新的一行,名字设置为URL Schemes 如下图。 URL Schemes下的Item0的Value值就是内容的关键了,他将是我们之后的URL协议名,这里我们写成App1(然后同样的步骤,将你要打开的应用的这里设置App2),然后就是代码部分了。
要是想测试的话,你可以把这部分代码放到按钮的点击事件中:
NSURL * url=[NSURLURLWithString:@"App2://"];
[[UIApplicationsharedApplication] openURL:url];
到这位置App1中的代码就是先了。下面是App2中的做法:首先你要是想让你的App2能响应App1的打开,他一定要再自己的AppDelegate中实现一个协议方法:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return YES;
}
这就完成了,有什么问题可以给我留言,由于分辨率的问题所以图片有点大,还望见谅。