在 UIWebView 中作为 Safari 打开网站?

Posted

技术标签:

【中文标题】在 UIWebView 中作为 Safari 打开网站?【英文标题】:Open website in UIWebView as Safari? 【发布时间】:2013-10-20 07:47:00 【问题描述】:

例如网站 'm.freemyapps.com' 拒绝所有浏览器甚至 UIWebView 并且只请求 Safari。

是否可以让我的应用程序以 Safari 的形式出现?

【问题讨论】:

【参考方案1】:

如果我正确理解您的问题,您可以做以下两件事中的任何一件-

1) 您可以重定向用户离开应用程序并在 Safari 中打开移动网站。

2) 对于移动站点支持,UIWebView 可能需要在请求中添加额外的 User-Agent 标头字段,以模仿 Safari。 例如

NSURL *url = [NSURL URLWithString:@"m.freemyapps.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:@"Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (Khtml, like   Gecko) Version/3.0 Mobile/1A543a Safari/419.3" forHTTPHeaderField:@"User-Agent"];
[webview loadRequest: request];

在大多数情况下,此解决方案应该有效。如果没有,您应该通过特定移动网站的服务器端实现来了解它是否需要发送额外的标头。

【讨论】:

谢谢,但 freemyapps 仍然拒绝我的应用程序。而且我不能将 Safari 用作外部应用程序 嗯..好的。您仍然可以尝试使用不同的用户代理组合 - 可以在这里找到 - useragentstring.com/pages/Safari。您还可以通过打开 whatsmyuseragent.com 在您的设备移动 safari 页面上检查特定的用户代理版本,然后尝试在 webview loadRequest 中使用它。如果没有任何效果,你应该和 m.freemyapps.com 的人谈谈。 我刚刚检查了 m.freemyapps.com 网站,发现以下信息 - 系统要求:需要 ios 6 或更高版本 您必须将 FreeMyApps 与 Safari 浏览器一起使用 设置 > Safari > 接受 Cookie 必须设置到“始终”或“从访问”设置 > Safari > 私人浏览必须设置为关闭所以,我认为他们正在设置 cookie - 您应该尝试在请求中设置 Cookie 标头,一旦您收到响应,您应该提取并存储它。请参阅此以获得一些指导-***.com/questions/12069622/uiwebview-enable-cookies 它使用 JQuery,我对这项技术的了解还不够,无法尝试将我的应用程序表示为 Safari。 到目前为止运气好吗? “尝试将我的应用程序表示为 Safari”是什么意思?你为什么要这样做?或者,你是否试图表达别的意思?能详细点吗?

以上是关于在 UIWebView 中作为 Safari 打开网站?的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView在Safari中打开链接

为啥 UIWebView 不能在 Safari 中打开我的链接?

UIWebView 在加载时打开 safari

UIWebView 未打开已安装的应用程序但在 safari 中打开

Safari 中的 UIWebView 打开链接不起作用?

通过 UIWebView 从网页打开 Safari 中的链接