描述:例如我的应用(B)需要请求QQ(A)允许使用QQ账号进行登录,B应用首先跳转到A界面,登录A账号后,A应用跳转到B应用,同时返回给B应用一个允许登录的回执码。B应用可以使用此回执码请求相应的账号信息。
A文件
示例:
1 . 添加协议 Info.plist 添加一行URL types,具体如下图
A-是协议的名称(可以任意),后面要用到
2 . 代码
- (IBAction)gotob:(id)sender {
//跳转到B
//先判断能否跳转到B应用
/*
如果设备上安装了带有B协议的应用,就能够跳转,否则返回NO
PS:能够借助这个特性简单判断用户是否安装了某个特定应用
*/
//只是跳转
// if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"B:"]]) {
// [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"B:"]];
//
//
// }
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"BC:"]]) {
//跳转和传值(只能字符串)
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"BC:username=xiaofang&password=123456"]];
}
}
B文件
1 . 添加协议 Info.plist 添加一行URL types,具体如下图
B和BC都是协议的名称,一个应用可以有多个协议。
http://blog.sina.com.cn/s/blog_7ea0400d0102uy01.html
代码
- (IBAction)gotoa:(id)sender {
//跳转到A
//先判断能否跳转到A应用
/*
如果设备上安装了带有A协议的应用,就能够跳转,否则返回NO
PS:能够借助这个特性简单判断用户是否安装了某个特定应用
*/
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"A:"]]) {
//跳
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"A:"]];
}
}
B应用接收A应用传递的信息
AppDelegate.m
下面两个方法都可以接收信息
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
NSLog(@"%@",url);
//输出 BC:username=xiaofeng&password=123456
return YES;
}
比较老的一个方法
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
NSLog(@"%@",url);
return YES;
}