应用间跳转

1. 我们的应用被别的应用打开

如果我们希望自己的应用可以被别的应打开,我们需要在info.plist文件中的URL Tpyes中添加一项
如果不要打开特定的页面,这样配置好URL Schemes就OK了,想要测试的话,直接在浏览器地址栏输入mytestdemo://并前往。

如果要求我们的应用被打开后跳转到指定的页面。我们可以监听AppDelegate的application:handleOpenURL:方法,根据携带的信息做相应的处理。

// iOS9以后用 application:openURL:options:代替
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
   // 接收传过来的参数
    NSString *text = [url.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    // 跳商品详情页
    if ([text containsString:@"product_detail"]) {
        // 可以直接拿parameters去请求,或者根据&和=分隔字符串拿到确定的参数去请求
        NSString *parameters = [text componentsSeparatedByString:@"?"].lastObject;
        NSLog(@"%@",parameters);  // product_id=100000&user_id=100086
    }
    
    return YES;
}

2.打开别人的应用

URL Schemes就相当于是一个协议头,我们想要打开第三方应用时,只需要拿到对方提供的URL Schemes,然后一句代码就可以搞定了

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mytestdemo://"]];

如果希望打开后跳转到某个特定的页面,可以在协议后面拼上约定好的参数,比如跳转到某个商品详情页,并携带参数。对方可以通过解析这写参数确定下一步的逻辑 

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mytestdemo://product_detail?product_id=100000&user_id=100086"]];

在执行打开第三方应用前 最好判断一下是否安装了改应用

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mytestdemo://"]];

 iOS9以前直接这么判断是没有问题的,但是iOS9以后 需要在info.plist添加白名单才能正确的判断是否安装,负责返回NO。
键为LSApplicationQueriesSchemes,是一个数组,每一项的值为URL Schemes协议头,注意是mytestdemo,不要写成mytestdemo://
如果没有填写白名单,只影响canOpenURL:的判断结果,不影响openURL:的执行,即如果安装了,openURL:还是可以打开的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值