IOS的APP实现相互调起和参数的传值

很多次都用到了,iOS中实现一个应用启动另外一个应用的功能。

一、首先为要跳转的APP,添加自定义URL协议的Schemes的id,很多成熟的app都有固定的Schemes的id,下面再说,首先添加自定义URL协议,添加方法这里介绍两种:

    第一种:直接在Info.plist里面添加,如图:

IOS的APP实现相互调起和参数的传值_第1张图片
添加URL types

在这里,URL Schemes 的item的值是APP跳转过程中的key,也就是自定义的url协议向iphone注册的key,URL identifier就相当于参数,你可以跳转到你的app的某一个具体功能页面,甚至事件。这里也可以不填写

第二种:可以直接在info的URL types中添加如图:

IOS的APP实现相互调起和参数的传值_第2张图片
添加URL types

二、实现跳转的代码,在这里使用openURL来实现APP之间的跳转,随着xcode的更新,目前需要添加白名单,过程如下:

  第一:添加白名单,在自己的的应用程序的的info.plist中添加LSApplicationQueriesSchemes属性,其类型为数组,然后在数组的下面添加要跳转的app的URL Schemes的key。添加白名单如图:

IOS的APP实现相互调起和参数的传值_第3张图片
添加白名单

 第二:编写代码实现跳转,这里跳转用的是openurl,跳转的test02的app,如图:

IOS的APP实现相互调起和参数的传值_第4张图片
无参数的打开url  schemes为test02的app 

代码如下:

- (IBAction)skipOtherApp:(UIButton *)sender {

NSURL* open_URL_A = [NSURL URLWithString:@"test02://"];

//判断是否是否有can打开应用程序,如果成功就打开

if ([[UIApplication sharedApplication] canOpenURL:open_URL_A]) {

NSLog(@"可以打开");

[[UIApplication sharedApplication] openURL:open_URL_A];

}

}

三:app在跳转过程中的参数传输,当跳转到url Schemes为test02时,将指定的数据传送过去,url Schemes为test02的程序在对数据处理(常用的参数传输为:test02登录数据,test02跳转到指定界面等)

(1)参数传递

将上面的代码:NSURL* open_URL_A = [NSURL URLWithString:@"test02://"];

修改成为:NSURL* open_URL_A = [NSURL URLWithString:@"test02://name=test01&password=123456"];

这样test01跳转到test02时的传输数据为"name=test01&password=123456",而在test02中处理传递数值的位置为appdelegate.m,在这里添加方法如下:

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

具体解释如图:

IOS的APP实现相互调起和参数的传值_第5张图片
test02 接受参数

(2)从自己的app跳转到app store 下载指定的app,具体代码如下:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.apple.com/gb/app/id391945719?mt=8"]];

其中id391945719可以改为你指定的app的id,当然你也可以将指定app的下载地址的https改为itms就可以了。

你可能感兴趣的:(IOS的APP实现相互调起和参数的传值)