Custom scheme URL 在WKWebView中默认是不支持的 (但Safari可以).
我们可以通过NSError来进行一些处理从而使得程序可以正常跳转:
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
LKHideBubble();
// Line 支付会走两次这个失败回调, 如果不做处理,这里有可能跳转两次Line APP
NSString *urlStr = error.userInfo[@"NSErrorFailingURLStringKey"];
if (!(urlStr && urlStr.length)) {
return;
}
if ([self.handledFailedUrls containsObject:urlStr]) {
return;
}
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlStr]]) {
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr] options:nil completionHandler:nil];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
}
[self.handledFailedUrls addObject:urlStr];
}
}
Note: 在iOS9中,如果你要想使用canOpenURL, 你必须添加URL schemes到Info.plist中的白名单, 否则一样跳转不了...
网友评论