UIWebView: ics and vcard-Links not handled

Viewed 482

I do have a UIWebView included where a public URL is loaded; unfortunately, vcard and ical-Links are not handled, i.e. nothing happens when I click on them.

I tried to set all data detectors, no luck unfortunately.

In the Xcode-log, I get this here when clicking on such a link:

2017-07-14 13:43:00.982413+0200 xxx[2208:967973] WF: _userSettingsForUser mobile: {
    filterBlacklist =     (
    );
    filterWhitelist =     (
    );
    restrictWeb = 1;
    useContentFilter = 0;
    useContentFilterOverrides = 0;
    whitelistEnabled = 0;
}

In Safari, the same stuff works as expected.

If I use UIApplication.shared.openURL(icsOrVcardUrl) Safari gets opened and from there everything works as expected again, but I don't want the user to leave the app...

EDIT This doesn't work either:

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if let url = request.url {
        if url.absoluteString.contains("=vcard&") || url.absoluteString.contains("/ical/") {
            let sessionConfig = URLSessionConfiguration.default
            let session = URLSession(configuration: sessionConfig)
            let request = URLRequest(url:url)
            let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
                if let tempLocalUrl = tempLocalUrl, error == nil {
                    DispatchQueue.main.async {
                        self.documentController.url = tempLocalUrl
                        self.documentController.presentPreview(animated: true)
                    }
                }
            }
            task.resume()
            return false
        }
    }
    return true
}
1 Answers
Related