不与WKWebView

时间:2016-02-03 09:10:32

标签: ios uiwebview wkwebview ios-universal-links

我在公司有基于web-view的应用和其他原生应用。我们在需要时使用universal links将用户重定向到其他应用(其他应用仍然支持universal links - 我可以通过按Apple Notes app中的链接来运行它们。 我们最近转换为WKWebView(来自UIWebView),这提供了更好的体验方式。但是在更新Universal Links停止工作后,当用户在我们的应用内按链接时,我们无法启动其他应用。

根据文件:

  

"通用链接可让iOS 9用户在点按链接时打开您的应用   您的网站在WKWebView和UIWebView视图和Safari页面中   除了导致调用openURL的链接外,例如那些   发生在邮件,消息和其他应用程序中。"

来源:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html

似乎WKWebView没有处理Universal Links。我的问题是,我是否遗漏了WKWebView的一些特殊配置,或者这是WebKit错误?我按照提供的方式创建了网页视图:

WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];  
config.allowsInlineMediaPlayback = YES;  
config.processPool = // Here I'm using shared process pool  

self.webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];  
self.webView.translatesAutoresizingMaskIntoConstraints = NO;  
self.webView.clipsToBounds = YES;  
self.webView.allowsBackForwardNavigationGestures = YES;  

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) {  
  self.webView.allowsLinkPreview = YES;  
}  
[self addSubview:_webView];

为了显示问题,我使用简单的应用程序(https://github.com/apan06/UniversalLinks创建了简单的存储库 - 初始化非常简单)。有两种网络视图 - WKWebViewUIWebView,两者都有简单的html,只有Twitter的链接。 WKWebView只需加载Twitter页面。另一方面,UIWebView打开Twitter应用。记住: - 在已安装Twitter应用的设备上对其进行测试,如果您没有Twitter app或不喜欢Twitter,则可以更改链接 - 我正在使用iPhone 6

iOS 9.2.1上对其进行测试

谢谢!

1 个答案:

答案 0 :(得分:0)

我相信WKWebView中存在一个错误,如果没有设置导航委托,它会忽略通用链接。尝试设置WKWebView的导航委托。您不必实现任何委托方法。