最近在整理原来的东西发现跳转另外的应用其实用处还是挺大的,比如最近的”支付宝“比较火,还有微信╮(╯▽╰)╭
先把两个应用设为A和B
A到B
A首先要知道B的位置
那么B就要设置定位标记让A知道 在info.plist加url types
只是跳转过去是没有意义的,还要有参数传递这样才有意义
NSString *paramStr = [NSString stringWithFormat:@"MyAppTest://username=%@&age=%@&address=%@", @"test123", @"100", @"上海市"];
NSURL *url = [NSURL URLWithString:[paramStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
if ([[[UIDevice currentDevice]systemVersion] floatValue]>=10.0) {
[[UIApplication sharedApplication] openURL:url options:nil completionHandler:^(BOOL success) {
if (success) {
NSLog(@"进入成功");
}
}];
}else{
[[UIApplication sharedApplication] openURL:url];
}
需要注意的是解析汉字需要UTF8
最后就是B接收A的信息
iOS9之前用
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
iOS9之后用
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
解析url时候一定要转化
NSString *urlStr = [[NSString stringWithFormat:@"%@",url] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
这是解析的字符串,也可以用字典转字符串的方法
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
NSString *urlStr = [[NSString stringWithFormat:@"%@",url] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if ([urlStr hasPrefix:@"JumpTest://"]) {
NSLog(@"TestAppDemo1 request params: %@", urlStr);
urlStr = [urlStr stringByReplacingOccurrencesOfString:@"JumpTest://" withString:@""];
NSArray *paramArray = [urlStr componentsSeparatedByString:@"&"];
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;
}
A到B知道了,B到A大同小异
Demo http://download.youkuaiyun.com/detail/rpf2014/9697217