gpt4 book ai didi

objective-c - 如何覆盖 webView 可以处理的重定向数量。 Obj-C, cocoa

转载 作者:行者123 更新时间:2023-12-03 16:58:11 25 4
gpt4 key购买 nike

这真让我烦恼。我有一个 webView,我试图让它加载drive.google.com。但是,由于该站点上的重定向量很大,因此 webView 不执行任何操作。我知道加载 webView 的代码有效,并且该 URL 是正确的,因为我收到 didFailWithProvisionalLoadWithError 消息。这就是我知道这是重定向问题的原因。

我已经查看了所有内容,但找不到任何方法来更改允许的重定向数量。我知道这是可能的,因为 Safari 可以处理它。必须有某种委托(delegate)方法可以重写。今天没有代码,因为我所有的搜索(4 天的搜索)都没有结果。

如果有人有想法,请告诉我。仅供引用,这是 Cocoa (WebView),而不是 cocoa touch (UIWebView)。谢谢。

最佳答案

您一直在寻找的是

– webView:decidePolicyForNavigationAction:request:frame:decisionListener:

它是 WebPolicyDelegate 协议(protocol)的一部分。

阅读 WebPolicyDelegate 的文档,特别是有关此委托(delegate)方法的讨论。 WebPolicyDecisionListener 的文档描述了您可以发送到监听器的消息。您可以在此委托(delegate)方法中识别重定向,并且可以指示决策监听器使用或忽略它。

编辑:

我很感激你的 50 分,但如果我没有帮助你解决你的问题,我几乎不认为我应得的,这足以激励我坐下来尝试你的问题。

我构建了一个小型应用程序,它不是基于文档的,或者使用 ARC 或垃圾收集。我在 MainMenu.xib 文件中关闭了自动布局,并简单地将 WebView 的实例放置在其中。我修改了 AppDelegate 以包含 WebView 实例的导出。

然后我创建了充实的 -applicationDidFinishLaunching: stub ,如下所示:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSString *urlString = @"http://drive.google.com";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

[[[self webView] mainFrame] loadRequest:urlRequest];
}

如果我收到重定向,它们似乎不会影响我显示页面的能力。

我们意见一致吗(没有双关语)?

编辑2:

好消息(或坏消息,取决于您的观点):重定向从来都不是问题(尽管它们确实有助于揭示到底发生了什么)。

对于 Google 云端硬盘,WebView 不是经过批准的浏览器。但是,您可以通过修改用户代理字符串来修复该问题(请注意,如下)。这是修改后的代码:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSString *urlString = @"http://drive.google.com";
NSURL *url = [NSURL URLWithString:urlString];

NSString *customUserAgent = [NSString stringWithFormat:@"%@ Version/6.0.2 Safari/8536.26.17", [[self webView] userAgentForURL:url]];

[[self webView] setCustomUserAgent:customUserAgent];

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

[[[self webView] mainFrame] loadRequest:urlRequest];
}

注意:用户界面似乎功能齐全,但即便如此,Google 可能会改变其确定浏览器是什么的方式并破坏此方案,因此请考虑自己受到警告。您可能想探索他们的 SDK,以获取访问 Google 云端硬盘的可能替代方法。

一如既往,祝您一切顺利。

关于objective-c - 如何覆盖 webView 可以处理的重定向数量。 Obj-C, cocoa ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481534/

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