iOS之应用间的跳转(无第三方参与)
一: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,如下: