IOS开发之App之间的拉起和跳转

我们平时在浏览HTML5页面的时候,经常会遇到跳转到微信、淘宝、京东等App页面,如下图所示:
在这里插入图片描述
那么IOS是如何实现App之间的跳转呢?今天就来学习一下。

URL Scheme:

IOS在系统层面为我们提供了URL Scheme来实现App之间的通信,比如App启动,跳转和参数传递。
其拉起的格式如下:
在这里插入图片描述
比如我们想拉起微信,可以在浏览器页面输入:weixin://
就可以跳转到微信app页面。当然我们也可以在weixin:// 后面追加内容,让其跳转到子页面。
接下来我就演示一下如何在Safari浏览器中拉起我自己创建的一个App。
要让App支持被拉起,首先我们需要在URL Types中设置该App的URL Scheme。
如图,我设置自己的App的URL Scheme为Sample。
在这里插入图片描述
接下来我在模拟器中进行试验:输入Sample://
在这里插入图片描述
模拟器就会跳出是否拉起App的窗口,选择Open,就可以实现跳转了。
这里需要强调一下,如果我们将自己App的URL Scheme设置为weixin,并在Safari浏览器中输入weixin://,浏览器依旧会打开我们的App,这就为一些不法分子提供了机会,利用打开微信等人们App的链接,而实际上跳转到的页面很可能是非法的链接。
以上展示了使用Safari唤起我的App,那么如何使用我自己的App唤起别的App呢?接下来就演示一下。

两个App之间的唤起:

如图,模拟器中,使用左边的App拉起右边的App。
在这里插入图片描述

首先我需要设置我要拉起的App的URL Scheme,此处设置为TestScheme
在这里插入图片描述

接着我在我自己的App里书写拉起的逻辑代码。
这里需要用到两个函数,一个是canOpenUrl,一个是openURL,原型如下:

- (void)openURL:(NSURL*)url options:(NSDictionary<UIApplicationOpenExternalURLOptionsKey, id> *)options completionHandler:(void (^ __nullable)(BOOL success))completion API_AVAILABLE(ios(10.0)) NS_EXTENSION_UNAVAILABLE_IOS("");

这里代码中我们在viewClick函数中实现拉起App的逻辑。

-(void) viewClick{
    NSLog(@"viewClick");
    //点击手势执行打开TestScheme App
    NSURL *urlScheme = [NSURL URLWithString:@"test://"];  //注意这里的URL要写成你在对应的拉起的App中设置的URL Scheme
    __unused BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:urlScheme];
    [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:^(BOOL success) {
        //
    }];
}

此时我们运行我们的App,并且执行点击逻辑,但是并不能拉起我们的App,并且canOpenURL返回的也是false。
这是因为在IOS9之后,IOS提供了白名单,只有在白名单里的App才能被拉起,因此,我们还需要把我们要拉起的App加入白名单。
接下来我们把要拉起的App加入白名单:
在这里插入图片描述
加入白名单后,我们再次点击黄色方框:在这里插入图片描述
设置断点观察:
在这里插入图片描述
可以看到canOpenURL返回YES,并且成功拉起TestScheme App。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值