这两天用到了应用间的相互跳转,查了网上的好多资料,最后结合了一下自己的验证做了一下xcode6的总结,以此共享!
1. 我们知道iOS没一个应用程序都有一个自己的沙盒,且沙盒和沙盒之间(即是应用与应用之间)是相互独立的。苹果要求每一个应用都只能限制在自身的沙盒中活动,杜绝应用在沙盒外的活动。当然越狱除外!
2. 现在的问题是?很多时候我们都要由一个应用去跳转到另一个应用或者跳转到appStore去共享、分享、下载等。但是应用和应用之间又是这么绝缘。不过所幸的是苹果提供给我们一个非常好的方法:就是 URL Scheme
3. 他就像一个地址,绑定url scheme 的应用就像是贴了一个独立logo的标签,通过访问应用的url scheme 我们就能跳转到对应的应用中。
说了这么多废话,下面我们开始配置url scheme 。(以Xcode6为基础,最后再说一下可能会遇到的错误)
1.首先打开工程进入tagets的info目录看到URL Tapes
2. 我们点击+号添加 在url identifier 中填入格式:com.company.xxx 在url scheme 中填入(这个可以随便填入,不过尽量和你的app保持一致)比如我填入的是 hztcTestApp 那么在调用的时候实际上是 hztcTestApp:// 格式
3.Role里面选择none就可以了
4.此时把这个工程给运行一下,运行成功以后,这个url scheme 就已经注册到模拟器上了(同理,在真机上安装后就已经注册到真及设备上了)
5.然后我们可以通过另一个工程来进行测试。 测试你设备上存在不存在刚刚注册了 url scheme的应用 可以根据此代码调试
BOOL isOpened = NO;
isOpened = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"hztcTestApp://"]];
if (isOpened) {
NSLog(@"有此应用");//由此应用就直接打开
}else{
NSLog(@"没有此应用");//若无此应用我跳到了商店的QQ
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/cn/app/qq/id451108668?mt=12"]];
}
6.至此,差不多已经完成了。最后再说一下,可能会出现的问题 :(没有经过完全验证,不能100%肯定,还请见谅)
我认为在targets中的info目录有URLTayes的不要在.plist文件中添加这些 url identifier 和 url scheme 等 因为可能出现不了正确结果! 当然如果没有 在targets中的info目录有URLTayes 可以在.plist文件中进行配置