在 OS X 应用程序 WebView 中模拟移动 Safari
我正在尝试制作一个 OS X 应用程序,使用基本的 WebView 代码显示移动网站的 WebView,问题是我希望此 WebView 自动加载其所在网站的移动版本。
WebFrame *mainFrame = [web1 mainFrame];
NSURL *url = [NSURL URLWithString:@"http://www.website.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[mainFrame loadRequest:request];
所以我的问题是,我是否可以在上面的代码中添加任何内容,以使此 Web 视图将其自身识别为移动浏览器所在的任何网站的服务器,从而自动加载其所在的任何网站的移动版本?我已经尝试在网上为自己寻找这个问题的答案,但没有找到答案。
预先感谢您提供的任何帮助!
I am trying to make an OS X app that displays a WebView of a mobile website using basic webview code, problem is I want this WebView to automatically load the mobile versions of whatever website it's on.
WebFrame *mainFrame = [web1 mainFrame];
NSURL *url = [NSURL URLWithString:@"http://www.website.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[mainFrame loadRequest:request];
So my question is, is there anything that I can add to the above code to make this web view identify itself to the server of what ever website it is on as a mobile browser, thus automatically loading the mobile version of any website it is on? I have already tried looking for the answer to this for myself online and haven't had the least bit of luck finding the answer.
Thank you in advance for any and all help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是
使用
NSMutableURLRequest
而不是简单的NSURLRequest
,这样您就可以更改它并使用其setValue:forHTTPHeaderField:
方法来设置“User-代理”HTML 标头字段到 MobileSafari 的用户代理。对于要使用的用户代理字符串,它取决于您想要“模拟”的 MobileSafari 版本(您想让服务器相信您是哪个版本/设备)。
请参阅此处了解一些可能的 UA 字符串
Yes
Use an
NSMutableURLRequest
instead of a simpleNSURLRequest
, so you can alter it and use itssetValue:forHTTPHeaderField:
method to set the "User-Agent" HTML Header field to the User-Agent of MobileSafari.For the User-Agent String to use, it depends on the version of MobileSafari you want to "emulate" (which version/device you want to make the server belives you are).
See here for some of the UA strings possible
一种更简单的方法是 在 WebView 中设置。
A simpler way would be to just set that in the WebView.