2

我想知道如何在 Cordova(Phonegap) 2.4.0 for iOS 上更改用户代理。

我已经阅读了更改 iOS 用户代理的解决方案。 更改 Phonegap 用户代理

但它不适用于 2.4.0。:p

我认为关于 InAppBrowser 功能的用户代理有一些变化......但我不知道为什么上层代码不起作用。

你有什么想法?

4

2 回答 2

0

是的,没错,自 2.4 以来,用户代理的处理方式发生了一些变化。现在所有的魔法都发生在CDVUserAgentUtil类中。目前 Cordova 没有提供任何标准方法来覆盖/扩展用户代理(但他们在路线图上有它:参见CB-2520

无论如何,我创建了这个解决方法,它在 2.5 版上对我来说很好:(我将代码段放在AppDelegate:didFinishLaunchingWithOptions 函数中)

注意:当应用程序首次启动或本地更改时,Cordova 会将代理保存在用户设置中。我们只需要在 Cordova 创建缓存副本之前覆盖默认设置。如果有可用的缓存,我们不需要再次运行此代码。

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSString *isAgentDefined = [userDefaults stringForKey:@"Cordova-User-Agent"];

if(isAgentDefined == nil) {
    UIWebView* sampleWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
    NSString *defaultAgent = [sampleWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
    [sampleWebView release];
    NSString *myAgent = @"My custom User-Agent";
    NSString *userAgent = [NSString stringWithFormat:@"%@ %@", defaultAgent, myAgent];

    [CDVUserAgentUtil acquireLock:^(NSInteger lockToken) {
        [CDVUserAgentUtil setUserAgent:userAgent lockToken:lockToken];
        [CDVUserAgentUtil releaseLock:&lockToken];
    }];
}
于 2013-03-28T12:59:05.323 回答
0

我在 Cordova 3.3 的 iOS 上遇到了同样的问题,并且CB-2520仍然存在,所以我破解了 CDVViewController.m 中的 userAgent 属性,这显然很脏,但有效。

于 2014-03-20T18:45:50.440 回答