iOS跳转到另一个程序
我这里只是写了部分东西,如果想看更加详细的,请点击原文链接.
application:handleOpenURL:
方法中处理传递给应用程序的URL请求。如果您已经为自己 的应用程序注册了定制的URL模式,则务必在委托中实现这个方法。二, 调用IOS自带的应用
上面讲述的是调用自身的应用,讲解了如何在自己应用之间调用问题,今天介绍一下如果调用IOS自带的app的方法
一、调用app store界面方法
在实际开发中,往往要推荐自己其他应用和推荐自己的收费软件,那么我们就需要在程序中直接连接到app store的相应页面。
实际上的做法很简单,使用的还是UIApplication类的OpenURL方法:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"程序的相应连接"]];
二、调用其它应用的方法
1)调用 自带mail
[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"mailto://admin@hzlzh.com"]];
2)调用 电话phone
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://8008808888"]];
3)调用 SMS
[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];
4)调用自带 浏览器 safari
[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"http://www.hzlzh.com"]];
5)调用 Remote
[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"remote://fff"]];
上面是最基本的语句,没什么处理过程。
如:调用phone可以传递号码,调用SMS只能设定号码,不能初始化SMS内容。
下面时程序中需要配置的地方
在目标程序的plist文件里面修改:
打开xxxx-info.plist,添加一项URL types
打开URL types,将item0的URL identifier修改为URL Schems
展开URL Schemes,将item0的内容修改为xxxApp(此为跳转的key)
如下图所示:
在程序里面需要跳转的地方,添加代码
NSURL *myUrl = [NSURL URLWithString:@"xxxApp://abcde"]; //xxxApp为目标App跳转的key
if([[UIApplication sharedApplication] canOpenURL:myUrl]){
[[UIAppliactioin sharedApplication] openURL:myUrl];
}
这样就可以实现跳转了。
2,配置URL Scheme
a,展开URL types,再展开Item1,将Item1下的URL identifier修改为URL Scheme
b,展开URL Scheme,将Item1的内容修改为myapp
(其他应用可通过”myapp://“来访问此自定义URL的应用程序)
3,其他应用的跳转
作为调用者的我,需要通过:
1
2
3
|
NSString *paramStr = [NSString stringWithFormat:@ "myAppTest://username=%@&age=%@&address=%@" , @ "test123" , @ "100" , @ "上海市" ]; NSURL *url = [NSURL URLWithString:[paramStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; [[UIApplication sharedApplication] openURL:url]; |
这段代码来跳转目标应用并传递参数。
4,参数的接收
那么作为一个Provider怎么去接收Customer传递过来的参数呢?
首先,在找到项目中的AppDelegate.m文件,然后找到openURL方法(如果没有就去实现它)。OK,到这里你已经完成了90%了,接着继续
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
- ( BOOL )application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSString *urlStr = [url absoluteString]; if ([urlStr hasPrefix:@ "myAppTest://" ]) { NSLog(@ "TestAppDemo1 request params: %@" , urlStr); urlStr = [urlStr stringByReplacingOccurrencesOfString:@ "myAppTest://" withString:@ "" ]; NSArray *paramArray = [urlStr componentsSeparatedByString:@ "&" ]; NSLog(@ "paramArray: %@" , paramArray); NSMutableDictionary *paramsDic = [[NSMutableDictionary alloc] initWithCapacity:0]; for ( int i = 0; i < paramArray.count; i++) { NSString *str = paramArray[i]; NSArray *keyArray = [str componentsSeparatedByString:@ "=" ]; NSString *key = keyArray[0]; NSString *value = keyArray[1]; [paramsDic setObject:value forKey:key]; NSLog(@ "key:%@ ==== value:%@" , key, value); } } return NO; } |