应用间跳转

实现应用间的跳转

  • 从demo1到demo2,首先设置demo2 的 URL schme:
    设置路径 tagert -> info ->URL_types 设置自己的schme

  • 在demo1 中响应时间中设置

// 进行应用跳转 URL Scheme格式 : scheme:// 
[[UIApplication 
sharedApplication] openURL:[NSURL URLWithString:@"demo2://"]];
  • 点击屏幕响应时间,弹出提示,直接跳转

如果添加

 // 判断系统上是否安装该App if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"demo2://"]]) {
 // 如果安装 --> 跳转 // 进行应用跳转 URL Scheme格式 : scheme:// [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"demo2://"]]; 
}else{ 
// 如果未安装 --> 提示或到AppStore下载页等
 NSLog(@"未安装此应用..."); 
}

这时候发现无法实现跳转,是因为iOS进行应用跳转时,如果使用了canOpenURL进行判断,就需要设置白名单,只有设置了URL Scheme白名单,才有可能返回YES

  • 设置白名单
    -- 在info.plist 中对应的key: LSApplicationQueriesSchemes
LSApplicationQueriesSchemes替换成目标app的URL Scheme

补充:
1).因为URL Scheme并不是唯一的,一个app也可以对应多个URL Scheme,所以会存在URL Scheme劫持的隐患
2).为了防止应用轻易获取用户隐私(通过canOpenURL遍历应用列表,就知道了用户安装的app列表,就一定程度上了解了用户的隐私),所以iOS9开始加入了白名单的限制(白名单有个数限制,最多90条)

跳转并传递参数

// 2. URL Scheme格式 : scheme://参数 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"demo2://demo1"]];

url.absoluteString 取url 中的字符串

    • 使用应用转到另一个应用会调用一下方法,可以在此方法里做一些事情
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{
 // 设置界面
 UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; tabBar.selectedIndex = 1; return YES;
}

你可能感兴趣的:(应用间跳转)