首页 > 技术文章 > iOS之应用间的跳转(无第三方参与)

chixuedong 2016-04-17 21:38 原文

一:URL:统一资源定位符(可以没有路径,但必须有协议头)

通常默认情况下应用程序是没有URL的。并且在iOS中打开一个应用程序只要拿到该应用的协议头即可。

一个应用程序可以在info->URL Type中设置一个URL(协议头),进行协议头配置。

打开其他应用方法代码如下:

具体步骤:

1.获取到对应程序的URL

2.判断程序中是否安装了对应的应用程序,方法是canOpenURL

3.如果是->打开应用程序

代码如下:

 

二:如何打开/跳转的应用中判断打开的是应用的哪个页面(比如朋友圈或者好友列表)

步骤:

1.通过在application的openURL方法中,将URL转成字符串

2.获取主页控制器,通过导航控制器拿到根控制器,同时每次调转都是从根控制器进行跳转

3.判断是通过哪个路径跳转过来的(通过判断字符串中有无包含对应对应的path,如果存在,打开跳转应用的页面)

代码如下:

注意:当应用程序处于杀死状态,也是可以进行跳转,通过didFinishLaunching打开程序再进行跳转执行上述方法

 

三、如何跳转应用结束之后返回原应用

步骤:

1.在跳转应用中添加一个返回按钮

2.设置原应用的URL,方法同上,在info->URL Type中设置一个URL(协议头),进行协议头配置

注意:当我们通过一个应用跳转回到原来的应用时,URL不能写死,我们需要把原应用的URL通过跳转时带到跳转的应用中,通过我们自己设置一个规范,把原应用的URL拼接到我们需要跳转的应用路径后面。当我们想要跳转回来的时候,通过原来的应用URL跳转回来,这样就会比较灵活。

提示:对于应用跳转传递原应用的URL,有两种方式

方法1> 通过在appdelegate中设置一个URL字符串属性,在打开应用的方法中,把传进来的URL赋给appdelegate的URL,再然后在对应的界面中通过单例属性拿到URL字符串截取取出原应用的URL,进行返回,相对简单;

方法2>通过事件传递的方式, 通过在主控制器中设置一个URL字符串属性,在打开应用的方法中,把传进来的URL赋给主页控制器的URL,在主页控制器中把URL传给跳转的界面,再然后在对应的界面中通过单例属性拿到URL字符串截取取出原应用的URL,进行返回,该方法代码如下:

主页控制器属性值传递给目的控制器属性:

 

  最终实现方法如下:

 

当然,原先跳转时候的参数需要改变,带上原来应用的URL,如下:

 

推荐阅读