2013-02-25 68 views

回答

0

是的,事實上,用戶代理處理從2.4開始有所改變。所有的魔法現在發生在CDVUserAgentUtil類中。目前科爾多瓦不提供任何標準方式來覆蓋/延長用戶代理(但他們有它的路線圖:看到CB-2520

總之,我創造了這個解決辦法,其2.5版本的工作對我罰款: (我放置在片段中的AppDelegate中:didFinishLaunchingWithOptions功能

注:科爾多瓦保存在用戶設置了代理,當應用程序首次啓動時或局部的變化,我們只需要覆蓋默認設置科爾多瓦創建之前。如果有緩存可用,我們不需要再次運行這個代碼

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]; 
    }]; 
} 
+0

嗨,編輯你的答案,加入'''#import'''語句來編譯它。嘗試查看是否可行,並在Cordova應用程序的index.html中放入''''''但用戶代理字符串不包含」我的自定義用戶代理「 - 任何想法? – 2013-04-14 22:53:06

+0

嗨,我知道這從2013年的日期,但我想問@ andreast00,我有問題,用戶代理成功更改,但只有第一次打開我的應用程序。如何讓應用程序在我退出後不緩存或清除緩存? – 2017-06-28 09:57:33

0

我遇到同樣的問題在iOS科爾多瓦3.3和CB-2520依然存在,所以我砍死在CDVViewController.m userAgent屬性,這是很骯髒很明顯,但工作。