公開URLがロードされる場所にはUIWebView
が含まれています。残念ながら、vcardとical-Linksは処理されません。つまり、クリックすると何も起こりません。UIWebView:icsとvcard - リンクが処理されない
私はすべてのデータ検出器を設定しようとしましたが、残念なことに運はありません。 Xcodeのログで
ようなリンクをクリックしたとき、私はここにこれを取得:Safariでは
2017-07-14 13:43:00.982413+0200 xxx[2208:967973] WF: _userSettingsForUser mobile: {
filterBlacklist = (
);
filterWhitelist = (
);
restrictWeb = 1;
useContentFilter = 0;
useContentFilterOverrides = 0;
whitelistEnabled = 0;
}
、期待通りに同じものが動作します。
私はUIApplication.shared.openURL(icsOrVcardUrl)
を使用する場合はSafariが開かれますし、そこから再びすべてが期待どおりに動作しますが、私は、ユーザーがアプリを離れたくない...
EDIT これはどちらか動作しません。
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
}
OSで特定の種類のリンクを処理するには、ここで受諾された回答を試しましたか?https://stackoverflow.com/a/4442594/2141666その答えは、http/https以外のものを処理しようとしています。おそらくあなたはそれを変更して、.vcardや.icsを含むURLをOSが処理できるようにすることができます。 – Kdawg
これらのリンクはダウンロードを開始するhttpsリンクです... – swalkner
保存されたファイルが拡張されているため、編集中のコードは機能しません。詳細については、私の答えの編集を参照してください。 –