准备:现在有两个 APP A 和 B,现在要在 B 里面检测是否安装了A。
方法:使用 [[UIApplication sharedApplication] openURL:url] 来判断设备是否安装了 APP A
一般来说,在 APP 中如果自定了 URL Types ,如下图:
NSString *urlString = @"first://";
NSURL *url = [NSURL URLWithString:urlString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url]
}
在 APP B中使用 [[UIApplication sharedApplication] openURL:url] 就能判断设备是否安装了 A 了,如果您的 iOS 系统是 9 以下,恭喜您,您应该已经成功了,但是不幸的是,笔者已经升级到 Xcode 7 与 iOS 9 了,说到这里,您大概也已经猜到了,结果肯定是失败的,失败的错误信息是:"first://myparams" - error: "This app is not allowed to query for scheme first", 这是 9 的新特性,为了用户的隐私安全,在检测的 APP (也就是这里的 APP B )中,必须将 APP A 设置成白名单之后才能通过 canOpenURL 的检测。
注意这里需要添加 白名单 的是 APP B,而不是被检测的 APP A,笔者就是给弄反了,折腾了好久才弄出来。