开发iOS项目的时候,有可能会遇到两个APP应用相互调用的需求,比如说:支付宝支付......等等。
下面来详细介绍实现的步骤:
1,添加URL Types项
a,打开项目中info.plist文件,在infomation property list项下面增加一项URL Typs
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;
}
|
通过本身自定的参数拼接规则,来解析参数。
到这里已经完成了应用之间的跳转,怎么样是不是很简单?
附录:常用iOS URL Scheme
iOS默认:
名称 | URL Scheme | |
---|---|---|
Safari: | http:// | |
maps: | http://maps.google.com | |
Phone: | tel: | |
SMS: | sms: | |
Mail: | mailto: | |
iBooks: | ibooks:// | |
App Store: | http://itunes.apple.com | |
iTunes: | http:http://phobos.apple.com | |
Music / iPod: | music: | |
Videos: | videos: |
常用第三方软件:
名称 | URL Scheme | Bundle identifier |
---|---|---|
QQ: | mqq:// | |
微信: | weixin:// | |
腾讯微博: | TencentWeibo:// | |
淘宝: | taobao:// | |
支付宝: | alipay:// | |
微博: | sinaweibo:// | |
weico微博: | weico:// | |
QQ浏览器: | mqqbrowser:// | com.tencent.mttlite |
uc浏览器: | ucbrowser:// | com.ucweb.iphone.uc com.ucweb.iphone.lowversion |
海豚浏览器: | dolphin:// | com.dolphin.browser.iphone.chinese |
欧朋浏览器: | ohttp://(后要接地址,不然出错) | com.oupeng.mini |
搜狗浏览器: | SogouMSE:// | com.sogou.SogouExplorerMobile |
百度地图: | baidumap:// bdmap:// | com.baidu.map |
百度地图: | bdmap:// | com.baidu.map |
Chrome: | googlechrome:// | |
优酷: | youku:// | |
京东: | openapp.jdmoble:// | |
人人: | renren:// | |
美团: | imeituan:// | |
1号店: | wccbyihaodian:// | |
我查查: | wcc:// | |
有道词典: | yddictproapp:// | |
知乎: | zhihu:// | |
点评: | dianping:// dianping://search | |
微盘: | sinavdisk:// | |
豆瓣fm: | doubanradio:// | |
网易公开课: | ntesopen:// | |
名片全能王: | camcard:// | |
淘宝宝贝搜索 | taobao://http://s.taobao.com/?q=[prompt] | |
淘宝店铺搜索 | taobao://http://shopsearch.taobao.com/browse/shop_search.htm?q=[prompt] |