iOS应用跳转

应用跳转是指,自己的app跳转到指定的app(如果用户安装了此app的话).

例1:AppA 跳转到AppB.
AppA需要做的是: 添加白名单,实现跳转方法

(1)
在info.plist添加白名单

(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

设置自己的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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容