iOS中的应用跳转用到的是URL Scheme,那么URL Scheme是什么?iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。就好比通过URL访问网站是一样的。
配置app的URL Scheme 有两种方法,第一种通过 info.plist文件来配置
第二种是通过项目设置配置
跳转操作(跳转之前要保证安装过另一个app)
- (IBAction)jumpTest1:(id)sender {
NSURL * url = [NSURL URLWithString:@"com.duicode.test1://"];
[[UIApplication sharedApplication]openURL:url];
}
接收跳转,使用 AppDelegate 里面的代理方法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
NSLog(@"Calling Application Bundle ID: %@", sourceApplication);
NSLog(@"URL scheme:%@", [url scheme]);
NSLog(@"URL query: %@", [url query]);
[self performSelector:@selector(goFirst) withObject:self afterDelay:2];
return YES;
}
-(void)goFirst{
NSURL * url = [NSURL URLWithString:@"com.duicode.test2://"];
[[UIApplication sharedApplication]openURL:url];
}
这里需要注意一下在iOS9以后,唤起端需要配置一下 LSApplicationQueriesSchemes。iOS9之后需要,iOS9之后提高了app的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开app。不然报错。
这样就实现了 app 之间的跳转。