2016-04-22 108 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的附加优势),我会考虑自己开发。

相关问题