2012-09-27 50 views
1

我試圖確定是否可以檢測到來自iOS UIWebView的請求,並且在這種情況下返回自定義佈局。使用iOS UIWebView時的Rails佈局(application.html.erb)邏輯

這裏是場景。目前,我有完全的Rails構建的移動web視圖,它看起來像這樣:

enter image description here

這負載在瀏覽器中正常工作。現在,我正在使用Xcode構建的iOS應用程序,它將本機代碼與UIWebViews混合使用。我現在所做的是本機構建紅色導航欄。我希望網站的其餘部分(具有白色背景的所有內容)加載到UIWebView中。

理想情況下,我會通過檢測請求是否來自iOS應用程序來做到這一點。如果是這種情況,佈局將而不是包括紅色導航欄(因爲它已經在本地處理)。如果請求來自瀏覽器,則佈局將包含紅色導航欄。

我已經四處搜索,但在這找不到任何東西。有誰知道如何拉這樣的事情?

回答

1

你可以通過做[request setValue:@"true" forHTTPHeaderField:@"My-iOSApp"]NSMutableURLRequest(取決於這可能是不同的,你使用的是什麼系統,在iOS應用HTTP網絡)

然後用request.headers自定義標題添加到您的原生iOS應用URL調用在Rails中獲取頭文件並檢查它們以查看My-iOSApp密鑰是否在頭文件中。如果是,那麼只渲染底部的主體佈局,否則使用導航欄渲染整個事物

+0

謝謝!會給這個去一個回報,但有道理。我有點希望有一個解決方案,不需要添加任何東西到本地代碼。 – pejmanjohn

+0

得到這個實施,並且效果很好。但有一件事:請求也可能來自WebView內部,在這種情況下,自定義標題字段將不存在。但是,啓動應用程序時的初始請求始終來自客戶端。然後,我的解決方案是檢查初始請求中的頭部,如果存在,則將會話變量設置爲true。然後,我使用會話變量作爲標題邏輯。 – pejmanjohn