新QQ交流群:418536818,之前的群已满
1.新建两个应用,分别为A和B.
2.设置应用B的url。
3.在应用A中编写打开app的代码
//携带数据
NSString *paramStr = [NSString stringWithFormat:@
"appb://username=%@&age=%@&address=%@"
, @
"test123"
, @
"100"
, @
"上海市"
];
NSURL *url = [NSURL URLWithString:[paramStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
点击之后,会跳转到新的控制器。
注意:打开应用B的过程中,B有两种状态。
第一种状态:B并没有启动,那么会启动B。并调用下面的方法。
//携带数据
- (
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;
}
第二种状态:此时B已经启动了,但是在后台运行,这个时候不会调用该方法。
二:说明
如果一个应用被另外一个应用打开,那么会调用下面的代理方法,且在该方法中可以实现两个应用之间数据的传递。
代码说明:
1 #import "YYAppDelegate.h" 2 3 @implementation YYAppDelegate 4 5 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 6 { 7 NSLog(@"didFinishLaunchingWithOptions---B"); 8 return YES; 9 } 10 11 //当一个应用程序被其他程序打开的时候会调用这个方法,在该方法中可以实现两个应用程序间的数据局传递 12 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 13 { 14 NSLog(@"%@",url); 15 NSLog(@"%@",sourceApplication); 16 return YES; 17 }