先說明需求:如果手機安裝了app,就打開該app,否則跳轉到Safari上。
X度到的很多資料基本上都是這樣:
1.配置白名單
image
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的值就可以(記得不要加上://)
image.png
我這次自己項目中用到的url scheme
google Home : chromecast
Amazon Alexa : Alexa
IFTTT : IFTTT
順便一些常見的url:https://www.zhihu.com/question/19907735
以及:http://www.lxweimin.com/p/382d3697beac 這里面鏈接的那篇文章覺得幫助蠻大的