【问题标题】:Rails layout (application.html.erb) logic when using iOS UIWebView使用 iOS UIWebView 时的 Rails 布局(application.html.erb)逻辑
【发布时间】:2012-09-27 22:00:17
【问题描述】:

我正在尝试确定是否可以检测到请求何时来自 iOS UIWebView,并在这种情况下返回自定义布局。

这是场景。目前我有一个完全在 Rails 中构建的移动 web 视图,它看起来像这样:

这会在浏览器中加载并正常工作。现在,我正在开发一个内置于 Xcode 的 iOS 应用程序,它将本机代码与 UIWebViews 混合。我在这一点上所做的是本地构建红色导航栏。我希望网站的其余部分(所有白色背景)加载到 UIWebView 中。

理想情况下,我会通过检测请求是否来自 iOS 应用程序来做到这一点。如果是这种情况,布局将包含红色导航栏(因为它已经在本地处理)。如果请求来自浏览器,则布局将包括红色导航栏。

我已经四处搜索,但找不到任何关于此的内容。有谁知道如何解决这样的问题?

【问题讨论】:

    标签: ios ruby-on-rails uiwebview


    【解决方案1】:

    您可以通过对NSMutableURLRequest 执行[request setValue:@"true" forHTTPHeaderField:@"My-iOSApp"] 向您的本机iOS 应用URL 调用添加自定义标头(这可能会有所不同,具体取决于您在iOS 应用中用于HTTP 网络的系统)

    然后使用request.headers 获取Rails 中的标头并检查它们以查看My-iOSApp 键是否在标头中。如果是,则仅渲染底部主体布局,否则使用导航栏渲染整个内容

    【讨论】:

    • 谢谢!会试一试并报告,但有道理。我有点希望有一个不需要向本机代码添加任何内容的解决方案。
    • 实现了这个并且效果很好。但有一件事:请求也可能来自 WebView,在这种情况下,自定义标头字段将不存在。但是,启动应用程序时的初始请求始终来自客户端。然后我的解决方案是检查初始请求的标头,如果存在,则将会话变量设置为 true。然后我将会话变量用于标题逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多