天天看点

iOS开发,两个app之间相互跳转(URL Scheme)认识URL Scheme

认识URL Scheme

URL Schemes是苹果给出的用来跳转到系统应用或者跳转到别人的应用的一种机制。同时还可以在应用之间传数据。笔者曾经想找出一种代替URL Scheme的方法,但是没有找到,所以想要打开别人的APP或者让别人打开我们的APP,那就需要通过URL Schemes了。

通过对比网页链接来理解 iOS 上的 URL Schemes,应该就容易多了。URL Schemes 有两个单词:

1、URL,我们都很清楚,http://www.apple.com就是个 URL,我们也叫它链接或网址;

2、Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com这个网址的 Schemes是 http。

根据我们上面对 URL Schemes 的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该是这个应用的 URL 的 Schemes 部分,也就是开头儿那部分。

感谢作者“谦言忘语 ”的分享http://www.jianshu.com/p/0811ccd6a65d

看了这个博客之后,我创建了两个项目,用来演示一下效果

项目ELWX代表 微信客户端

项目ELNongyao代表 农药客户端

我们用微信sdk登录的时候,微信文档都会写上在Info.plist中的一些设置,下面我们在ELNongyao中Info.plist中的设置看下图

iOS开发,两个app之间相互跳转(URL Scheme)认识URL Scheme

具体微信那边怎么设置的我不太清楚,我只是这么猜测,当我们申请好了一个微信应用的时候,微信会给我们一个App id 和 AppSecret , 然后微信工作人员会将这个App id填写在URL types这里面。

我们登录的时候微信会要求我们把App id 传过来,跳转到微信客户端以后,在微信中点击授权,授权成功之后微信应该会调用下面的方法

//ELWXkldjie93410ld代表App id ,schemes=ELWX&success=YES是一些参数
//比如授权成功,或者授权失败,会返回给客户端
    NSString *customURL = @"ELWXkldjie93410ld://app?schemes=ELWX&success=YES";
    if ([[UIApplication sharedApplication]
         canOpenURL:[NSURL URLWithString:customURL]])
    {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
    }
           

上面是微信客户端,下面我们看看农药客户端是如何进行跳转的

农药中的info.plist

iOS开发,两个app之间相互跳转(URL Scheme)认识URL Scheme
iOS开发,两个app之间相互跳转(URL Scheme)认识URL Scheme

接下来我们就看代码吧,大家可以通过运行代码就可以看到效果了

代码的地址 https://github.com/elite-kai/ELUrlScheme

注意:

在info.plist中的设置比刚创建好的项目多了URL types、LSApplicationQueriesSchemes这两项

继续阅读