App之间的跳转

需求

一个App跳转到另一个App

实现

创建俩个Demo,app1和app2,实现app1跳转至app2:

1.app2内配置协议(scheme),名字随意起(一般是项目名倒序,英文),配置完成后需要运行app2,相当于注册了scheme

targets –> info –> URL Types –> URL Schemes –> app2 (不需要写成 app2:// )

2.app1配置白名单(iOS9以后)

info –> LSApplicationQueriesSchemes ->NSArray

3.app1实现跳转代码

1
2
3
4
5
6
7
8
9
10
11
12
- (IBAction)jump2App2:(id)sender {
NSURL *url = [NSURL URLWithString:@"app2://"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}else{
NSLog(@"没有安装此app");//可以做跳转到appStore下载操作
}
}


4.跳转到指定界面

1.只需要在”app2://“协议后面的域名添加字段来标记需要跳转的界面

1
2
3
4
5
6
7
8
9
10
11
12
- (IBAction)jump2App2More:(id)sender {
NSURL *url = [NSURL URLWithString:@"app2://more"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}else{
NSLog(@"没有安装此app");//可以做跳转到appStore下载操作
}
}

2.在app2的AppDelete类的.m文件中,监听代理方法,作相应的处理

三个回调的优先级 C>B>A

  • (BOOL)application:(UIApplication )application handleOpenURL:(NSURL )url //iOS2.0 A
  • (BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation //iOS4.2 B
  • (BOOL)application:(UIApplication )app openURL:(NSURL )url options:(NSDictionary *)options //iOS9.0 C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {
    NSLog(@"url:%@",url.absoluteString);
    NSLog(@"host:%@",url.host);
    if ([url.host isEqualToString:@"more"]) {
    NSLog(@"进入更多界面");
    //到此做界面的跳转
    }
    return YES;
    }
这个人很帅<br>他什么都不想说<br>