在 OS X 应用程序 WebView 中模拟移动 Safari

发布于 2024-12-07 13:05:48 字数 453 浏览 2 评论 0原文

我正在尝试制作一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷迭香的记忆 2024-12-14 13:05:48

使用 NSMutableURLRequest 而不是简单的 NSURLRequest,这样您就可以更改它并使用其 setValue:forHTTPHeaderField: 方法来设置“User-代理”HTML 标头字段到 MobileSafari 的用户代理。

// You may adapt the UserAgent string depending on what device and Safari version you want to represent
static NSString* const kMobileSafariUserAgent = @"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7";
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:kMobileSafariUserAgent forHTTPHeaderField:@"User-Agent"];
[mainFrame loadRequest:request]; 

对于要使用的用户代理字符串,它取决于您想要“模拟”的 MobileSafari 版本(您想让服务器相信您是哪个版本/设备)。

请参阅此处了解一些可能的 UA 字符串

Yes

Use an NSMutableURLRequest instead of a simple NSURLRequest, so you can alter it and use its setValue:forHTTPHeaderField: method to set the "User-Agent" HTML Header field to the User-Agent of MobileSafari.

// You may adapt the UserAgent string depending on what device and Safari version you want to represent
static NSString* const kMobileSafariUserAgent = @"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7";
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:kMobileSafariUserAgent forHTTPHeaderField:@"User-Agent"];
[mainFrame loadRequest:request]; 

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

痴者 2024-12-14 13:05:48

一种更简单的方法是 在 WebView 中设置

A simpler way would be to just set that in the WebView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文