加载桌面版网站

时间:2012-10-07 04:26:12

标签: iphone objective-c ios uiwebview

如何加载桌面版网站(例如google,facebook)而不是移动版?

2 个答案:

答案 0 :(得分:3)

你为什么要经历这一切的麻烦?这是错误/长期的方法。

只需创建一个NSMutableRequest并在其中设置useragent,而不是UIWebView。然后只需使用UIWebView正常/非私有loadRequest: - 函数加载请求。

答案 1 :(得分:2)

修改:忽略这一切。 Yaniv是对的。只需使用NSMutableURLRequest消息将UIWebView加载到- loadRequest:实例,然后将"User-Agent"标头设置为您想要的任何内容。

NSMutableURLRequest *rq = [NSMutableURLRequest requestWithURL:someUrl];
[rq setValue:@"Some desktop user-agent" forHTTPHeaderField:@"User-Agent"];
[webView loadRequest:rq];

对于您的信息,桌面用户代理字符串的一个很好的选择是Chrome - 它也是基于WebKit的,作为Safari,因此特定于WebKit的扩展程序将起作用。因此,请尝试将用户代理字符串设置为

  

Mozilla / 5.0(Macintosh; Intel Mac OS X 10_8_2)AppleWebKit / 537.11(KHTML,与Gecko一样)Chrome / 23.0.1271.6 Safari / 537.11


原帖:

您可以尝试欺骗UIWebView的用户代理,但我不能保证这样一个强大的黑客会让你通过AppStore的瘦门......

void *object_getIvarPtr(id obj, const char *name)
{
    Ivar iv = object_getInstanceVariable(obj, name, NULL);
    off_t offset = ivar_getOffset(iv);
    return (char *)obj + offset;
}

// In some initialization routine, after having created the web view
id webViewInternal = *(id *)object_getIvarPtr(someWebView, "_internal");
id webBrowserView = *(id *)object_getIvarPtr(webViewInternal, "browserView");
id webKitWebView = [webBrowserView webView];

NSString *desktopUAStr = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11"
[webKitWebView setCustomUserAgent:desktopUAStr];