应用跳转是指,自己的app跳转到指定的app(如果用户安装了此app的话).
例1:AppA 跳转到AppB.
AppA需要做的是: 添加白名单,实现跳转方法
(1)(2) 实现跳转方法
// 1.获取应用程序AppB的URL Scheme
NSURL *appBUrl = [NSURL URLWithString:@"AppB://?AppA"];
// 2.判断手机中是否安装了对应程序
if ([[UIApplication sharedApplication] canOpenURL:appBUrl]) {
// 3. 打开应用程序AppB
[[UIApplication sharedApplication] openURL:appBUrl];
} else {
NSLog(@"没有安装AppB");
}
AppB需要做的是: 设置自己的URL scheme, 在AppDelegate里实现跳转的方法
(1)设置自己的URL scheme
(2)在AppDelegate里实现跳转的方法
//URL scheme
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return YES;
}
例2:AppA 跳转到AppB指定界面.
AppA需要做的是: 添加白名单,实现跳转方法(实现的方法不同了)
// 1.获取应用程序AppB的Page1页面的URL
NSURL *appBUrl = [NSURL URLWithString:@"AppB://Page1?AppA"];
// 2.判断手机中是否安装了对应程序
if ([[UIApplication sharedApplication] canOpenURL:appBUrl]) {
// 3. 打开应用程序AppB的Page1页面
[[UIApplication sharedApplication] openURL:appBUrl];
} else {
NSLog(@"没有安装");
}
AppB需要做的是: 设置自己的URL scheme, 在AppDelegate里实现跳转的方法,在方法中实现指定界面跳转
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 1.获取导航栏控制器
UINavigationController *rootNav = (UINavigationController *)self.window.rootViewController;
// 2.获得主控制器
ViewController *mainVc = [rootNav.childViewControllers firstObject];
// 保存完整的App-A的URL给主控制器
mainVc.urlString = url.absoluteString;
// 3.每次跳转前必须是在跟控制器
[rootNav popToRootViewControllerAnimated:NO];
// 4.根据字符串关键字来跳转到不同页面
if ([url.absoluteString containsString:@"Page1"]) { // 跳转到应用AppB的Page1页面
//弹出方式取决于界面类型
//[mainVc.navigationController pushViewController:[[Page1Controller alloc]init] animated:NO];
[mainVc presentViewController:[[Page1Controller alloc]init] animated:NO completion:nil];
}
return YES;
}