很多次都用到了,iOS中实现一个应用启动另外一个应用的功能。
一、首先为要跳转的APP,添加自定义URL协议的Schemes的id,很多成熟的app都有固定的Schemes的id,下面再说,首先添加自定义URL协议,添加方法这里介绍两种:
第一种:直接在Info.plist里面添加,如图:
在这里,URL Schemes 的item的值是APP跳转过程中的key,也就是自定义的url协议向iphone注册的key,URL identifier就相当于参数,你可以跳转到你的app的某一个具体功能页面,甚至事件。这里也可以不填写
第二种:可以直接在info的URL types中添加如图:
二、实现跳转的代码,在这里使用openURL来实现APP之间的跳转,随着xcode的更新,目前需要添加白名单,过程如下:
第一:添加白名单,在自己的的应用程序的的info.plist中添加LSApplicationQueriesSchemes属性,其类型为数组,然后在数组的下面添加要跳转的app的URL Schemes的key。添加白名单如图:
第二:编写代码实现跳转,这里跳转用的是openurl,跳转的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;
具体解释如图:
(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就可以了。