使用 iOS UIWebView 时的 Rails 布局(application.html.erb)逻辑
Posted
技术标签:
【中文标题】使用 iOS UIWebView 时的 Rails 布局(application.html.erb)逻辑【英文标题】:Rails layout (application.html.erb) logic when using iOS UIWebView 【发布时间】:2012-09-27 22:00:17 【问题描述】:我正在尝试确定是否可以检测到请求何时来自 ios UIWebView,并在这种情况下返回自定义布局。
这是场景。目前我有一个完全在 Rails 中构建的移动 web 视图,它看起来像这样:
这会在浏览器中加载并正常工作。现在,我正在开发一个内置于 Xcode 的 iOS 应用程序,它将本机代码与 UIWebViews 混合。我在这一点上所做的是本地构建红色导航栏。我希望网站的其余部分(所有白色背景)加载到 UIWebView 中。
理想情况下,我会通过检测请求是否来自 iOS 应用程序来做到这一点。如果是这种情况,布局将不包含红色导航栏(因为它已经在本地处理)。如果请求来自浏览器,则布局将包括红色导航栏。
我已经四处搜索,但找不到任何关于此的内容。有谁知道如何解决这样的问题?
【问题讨论】:
【参考方案1】:您可以通过对NSMutableURLRequest
执行[request setValue:@"true" forHTTPHeaderField:@"My-iOSApp"]
向您的本机iOS 应用URL 调用添加自定义标头(这可能会有所不同,具体取决于您在iOS 应用中用于HTTP 网络的系统)
然后使用request.headers
获取Rails 中的标头并检查它们以查看My-iOSApp
键是否在标头中。如果是,则仅渲染底部主体布局,否则使用导航栏渲染整个内容
【讨论】:
谢谢!会试一试并报告,但有道理。我有点希望有一个不需要向本机代码添加任何内容的解决方案。 实现了这个并且效果很好。但有一件事:请求也可能来自 WebView,在这种情况下,自定义标头字段将不存在。但是,启动应用程序时的初始请求始终来自客户端。然后我的解决方案是检查初始请求的标头,如果存在,则将会话变量设置为 true。然后我将会话变量用于标题逻辑。以上是关于使用 iOS UIWebView 时的 Rails 布局(application.html.erb)逻辑的主要内容,如果未能解决你的问题,请参考以下文章
使用 iPhone UIWebView 时的 Asp.Net 表单身份验证
按钮单击时的 uiwebview 不会返回到该按钮操作中传递的 url