更改Phonegap用户代理

Nic*_*ack 10 user-agent ios cordova

允许我的Phonegap应用程序浏览到也使用Phonegap API的一些外部站点.目前我有条件地包括Phonegap javascript基于你在哪个平台(Android,iOS等).但是,我无法区分Phonegap应用程序与移动设备上的常规浏览器之间的区别.有没有办法在我的Phonegap应用程序中更改用户代理,以便为我的服务器提供有关此内容的提示?

最感兴趣的是iOS解决方案.

小智 18

如果您仍在寻找快速解决方案,那么我就是这样做的:

// Modify the user-agent
NSString* suffixUA = @" my nice user-agent suffix";
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero]; 
NSString* defaultUA = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSString* finalUA = [defaultUA stringByAppendingString:suffixUA];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:finalUA, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
Run Code Online (Sandbox Code Playgroud)

在PhoneGap的(科尔多瓦)示例应用程序,您需要在添加这些行didFinishLaunchingWithOptions方法AppDelegate.m

我花了一整天的时间试图弄明白这个!我相信它对其他人有用.

  • 要使@alanou解决方案正常工作,您应该在return语句之前添加他在didFinishLaunchingWithOptions方法末尾发布的代码.看来[self.window makeKeyAndVisible]; 必须先运行才能更改UA.使用iOS 6.1.3在iPhone 4上测试OK (4认同)
  • 很高兴包含android解决方案. (2认同)

Mik*_*lan 6

CB-2520已解决,建议允许修改用户代理字符串.您现在可以通过设置MainViewController 的baseUserAgent属性来实现此目的.对于一个简单的测试,你可以添加以下的didFinishLaunchingWithOptions的方法AppDelegate.m的MainViewController初始化后:

self.viewController.baseUserAgent = @"My Custom User Agent";


Gre*_*idt 6

这个答案对一个类似问题也提到了当前科尔多瓦版本的偏好:

<preference name="OverrideUserAgent" value="MyCordovaApp/1.2.3" />
Run Code Online (Sandbox Code Playgroud)

适用于AndroidiOS.