2016-04-22 133 views
3

我希望能夠在我的ruby on rails服務器端檢測到http請求來自我的應用中的webView組件。該應用程序正在使用react-native。特別是,我想區分來自應用程序的請求和運行在iOS設備上的移動Safari瀏覽器的請求。如何在反應本機中爲webView請求設置自定義標頭

我已經嘗試設置在AppDelegate.m文件

NSURL *url = [NSURL URLWithString:@"http://localhost:3000/signin"]; 
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60]; 
    [request addValue:@"GolfMentor" forHTTPHeaderField:@"User-Agent"]; 
    [request addValue:@"GolfMentor" forHTTPHeaderField:@"X-MY-CUSTOM-HEADER"]; 
    NSLog(@"%@", [request allHTTPHeaderFields]); 

,並在控制檯輸出以下是

GolfMentor[63924:12437749] { 
"User-Agent" = GolfMentor; 
"X-MY-CUSTOM-HEADER" = GolfMentor; 
} 

因此,客戶標題上顯示進行設置。但是,當我在Rails應用程序的ruby中查看請求標題時,沒有自定義標題的標誌。看起來我的更改在執行react-native應用程序時被覆蓋。那麼我應該在哪裏以及如何設置自定義標題?我也有興趣爲Android版本的應用做同樣的事情嗎?

回答

3

嘗試添加下列行來AppDelegate.m設置定製用戶代理

NSString *newAgent = @"GolfMentor"; 
NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:newAgent, @"UserAgent", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary]; 

更全面的回答和用於機器人的辦法可以解決here

0

我有點懷疑你將能夠做到這一點。如果它沒有公開爲您可以在React Native提供的WebView組件上設置的道具,那麼我認爲您不能這樣做。

順便說一句,React Native中的WebView組件並不是那麼棒。在iOS方面,它包裝了UIWebView,但對於iOS 8+,存在WkWebView,它比UIWebView更符合標準並且速度更快。

http://blog.initlabs.com/post/100113463211/wkwebview-vs-uiwebview

我目前工作的一個應用程序,使大量使用網頁視圖中,我們結束了我們的寫作爲iOS和Android自己的本機組件。這比聽起來容易,特別是如果你已經有本地開發經驗。所以如果你在webviews方面做了很多工作,並且開箱即用的組件並不能滿足你的需求(並且你希望WkWebView與UIWebView的附加優勢),我會考慮自己開發。

相關問題