gpt4 book ai didi

ios - 如何在 WKWebView 中 t.co 重定向后获取最终 URL

转载 作者:行者123 更新时间:2023-11-28 23:57:10 30 4
gpt4 key购买 nike

我知道我通常可以通过使用 URL 属性来获取 WKWebView 的当前 URL。但是我发现当有重定向时,它不会给我正确的 URL。

例如,如果我转到 http://twitter.com然后单击其他公司的链接(例如: http://mycompany.com ),然后我看到 t.co/XXX URL,它最终将我重定向到 mycompany.com。

但是,当我查看 WKWebView 的 URL 属性时,我看到的是“t.co”而不是“mycompany.com”。

奇怪的是,我从来没有看到 didReceiveServerRedirectForProvisionalNavigation:... 被调用,当我检查 didStartProvisionalNavigation:... 和decidePolicyForNavigationAction:... 的 URL 时,我只看到“t.co” URL 而不是“mycompany.com” “一个。

另外,我需要知道域以便对正文进行一些调整,所以我不确定我是否可以在这里使用 JS。

如果您有任何想法,请告诉我。

更新:我意识到只有当我使用通过 setURLSchemeHandler: 设置的自定义 URL 方案时才会发生这种情况,我最初从问题中省略了它,因为我认为它不相关。

经过一番尝试后,我能够通过以下更改 willPerformHTTPRedirection:...:

NSMutableURLRequest *newRequest = 
[NSMutableURLRequest requestWithURL:request.URL];

dispatch_async(dispatch_get_main_queue(), ^{
[_webView loadRequest:newRequest];
});

completionHandler(nil);

更新:这有一个严重的缺点,因为不适用于主框架的 URL 将进入 willPerformHTTPRedirection:...,如果为所有这些重新加载请求,页面就会变得困惑。

我需要一种方法来确定 URL 是否来自主框架,并且只为那些重新加载。

最佳答案

好吧,我做到了。 https://imgur.com/a/eBSaNn7

解决办法是取消导航,重新用loadRequest:加载请求。

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame?.isMainFrame != true {
webView.load(navigationAction.request)
}

return nil
}

关于ios - 如何在 WKWebView 中 t.co 重定向后获取最终 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881684/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com