现有APPA,APPB,需求为在APPA中打开APPB。首先在APPA中检测设备中是否安装了APPB.
检测方法:
iOS10以前的方法
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
iOS10以后,直接打开
NSDictionary<NSString \*,id>\*options = @{UIApplicationOpenURLOptionsSourceApplicationKey : @YES};
[[UIApplication sharedApplication] openURL:url options:options completionHandler:^(BOOL success) {
}];
通常情况下,设定一个APP能被其它APP打开,需要配置URL Types.此处,我们在APP_B中配置URL Types如图
设置完成后,将APPB安装到设备中,在APPA中使用如下代码打开NSString *urlString = @"APP_B://"; NSURL *url = [NSURL URLWithString:urlString]; if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url] }
如果设备的系统为iOS9以下,那么可以成功打开,如果是iOS9及以上,会得到错误的信息 "APP_B://myparams" - error: "This app is not allowed to query for scheme first" 这是 iOS9 的新特性,为了用户的隐私安全,在检测的 APPA中,必须将 APPB 设置成白名单之后才能通过 canOpenURL 的检测。 如图,在APP_A的info.plist中设置如下
再次尝试,成功打开。