3

web-view在公司有基础应用程序和其他本地应用程序。我们曾经universal links在需要时将用户重定向到其他应用程序(其他应用程序仍然支持universal links- 我可以通过按链接来运行它们Apple Notes app)。我们最近过渡到WKWebView(from 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错误?我正在按照提供的方式创建 Web 视图:

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 - 初始化非常简单)。有两个 web 视图 -WKWebView并且UIWebView都带有简单的 html,只有Twitter. WKWebView只需加载Twitter页面。另一方面UIWebView打开Twitter应用程序。请记住: - 在Twitter安装了应用程序的设备上测试它,如果你没有Twitter app或不喜欢 Twitter,你可以更改链接 - 我正在测试iPhone 6iOS 9.2.1

谢谢!

4

1 回答 1

0

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

于 2016-02-03T16:20:01.893 回答