先说明需求:如果手机安装了app,就打开该app,否则跳转到Safari上。
X度到的很多资料基本上都是这样:
1.配置白名单
2.代码
NSURL *url = [NSURL URLWithString:@"weixin://"];
//mqq为要跳转的app的url
BOOL open = [[UIApplication sharedApplication] canOpenURL:url];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
if (IOS10_OR_LATER) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
NSLog(@"success = %d",success);
}];
}else{
[[UIApplication sharedApplication] openURL:url];
}
}
else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.baidu.com/"]];
}
代码是对的,但是如果你在工程面板处,通过Info这边的URL Type进行配置了(上面那张图),那么不管手机上有没有安装微信,canOpenUrl返回的值都是YES。只有这边不配置,canOpenUrl才能返回正确的值。这样才能实现手机安装了app,就打开该app,否则跳转到Safari上。当然白名单还是要配置的,在Info.plist中配置。在LSApplicationQueriesSchemes中添加一栏,string的值,为你要跳转的app的url scheme的值就可以(记得不要加上://)
我这次自己项目中用到的url scheme
google Home : chromecast
Amazon Alexa : Alexa
IFTTT : IFTTT
顺便一些常见的url:https://www.zhihu.com/question/19907735
以及:https://www.jianshu.com/p/382d3697beac 这里面链接的那篇文章觉得帮助蛮大的