В моем wkwebview у меня есть ссылка на какой-то файл, такой как страницы, номера и т. Д. Я вижу, что wknavigationresponse принимает решение о загрузке или показе контента. Однако объект ответа wknavigation, похоже, не содержит запрошенный URL-адрес, а измененный URL-адрес яблока. например я прошу
https://www.sarvepalli.net/ax/Subscriptions%20Data.numbers
Он переводится в wknavigationresponse.response.url, как показано ниже:
х-яблочно-QL-ID: //4A35794C-554C-4732-9159-BFCB7A688F1D/x-apple-ql-magic/Subscriptions%20Data.numbers
Я устал от использования wknavigationaction для установки глобальной переменной с именем current_url, но это, похоже, не работает, поскольку эти методы либо асинхронно вызываются, либо вызываются в обратном порядке, чем я предполагал (1) Wknavigationaction затем (2) solvepolicyfor: WknavigationResponse
Я застрял в любой помощи в поиске способа сбора текущего URL-адреса, запрашиваемого, когда пользователь нажимает на ссылку в веб-просмотре, он будет очень признателен.
Спасибо
Виджей
/* This should get replaced by the navgationaction */
var current_url= URL(string: "https://example.com/download/a.docx")!
func webView(_ webView: WKWebView,
createWebViewWith configuration: WKWebViewConfiguration,
for navigationAction: WKNavigationAction,
windowFeatures: WKWindowFeatures) -> WKWebView? {
// if navigationAction.targetFrame == nil, let url = navigationAction.request.url {
if navigationAction.request.url != nil, let url = navigationAction.request.url {
//if url.description.lowercased().range(of: "http://") != nil ||
self.current_url = url
let url_request:URLRequest = URLRequest(url: navigationAction.request.url!)
webView.load(url_request)
}
func webView(_ webView: WKWebView,
decidePolicyFor navigationResponse: WKNavigationResponse,
decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
let mimetype = navigationResponse.response.mimeType!
let thisurl = navigationResponse.response.url?.absoluteString
print("Current Url being requested is ",current_url.absoluteString)
print("Current Url being considered ", navigationResponse.response.url?.absoluteString ?? "unknown");
decisionHandler(.allow)
}
Я получаю странный ответ, такой как
Текущий запрашиваемый URL напечатан как "https://example.com/download/a.docx"
(Это должен быть URL, по которому
https://www.sarvepalli.net/ax/Subscriptions%20Data.numbers
)
Текущий URL рассматривается
х-яблочно-QL-ID: //4A35794C-554C-4732-9159-BFCB7A688F1D/x-apple-ql-magic/Subscriptions%20Data.numbers
(Это непригодный внутренний URL-адрес, указанный Apple, который, возможно, кэшируется где-то на устройстве)