我正在尝试使用 UIWebView 在我的应用程序中嵌入网站的移动版本。但是,当我执行以下操作时:
NSURL *url = [NSURL URLWithString:webLink];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[self.webView loadRequest:request];
网站的完整版本已加载。然后,当我单击此页面中的任何链接时,它将处理该网站的移动版本(正如我从一开始就希望的那样)。
我试过弄乱用户代理,但没有成功。我不认为它正在查看用户代理来确定是否加载页面的移动版本,因为我将我的 Firefox 用户代理设置为 iPhone,它仍然继续加载完整版本。
如果有帮助的话,我要加载的网站是一个留言板,使用 IP Board 3.1.4。我尝试在网上查看它如何确定是否显示移动版本,但没有成功。
最佳答案
我今天找到了解决问题的方法。
我在 IP Board 支持论坛上发布了我的问题,得到回复说 IP Board 检查用户代理中的“iPhone”或“mobileApp”cookie。由于乱用用户代理对我不起作用,所以我采用了后一种方法。
我将此代码放入我的 appdelegate 中的 applicationDidBecomeActive 方法中:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@"mobileApp" forKey:NSHTTPCookieName];
[cookieProperties setObject:@"1" forKey:NSHTTPCookieValue];
[cookieProperties setObject:@"www.example.com" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"www.example.com" forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
PS:我在另一个关于 cookie 的 stackoverflow 问题中找到了这个 cookie 解决方案。
关于ios - UIWebView 未使用 loadRequest 加载网站的移动版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542038/