iOS UIWebView 自訂 UserAgent

來源:互聯網
上載者:User

標籤:

我的需求是:使用者使用我的瀏覽器瀏覽網頁,伺服器可以得到我的瀏覽器名稱和版本號碼,站長工具能查看到用戶端來源。OK,解決思路就是修改系統預設的使用者代理程式UserAgent,這是沒差的。

曾經做過的App也有這樣的需求,思路是在UIWebView 的 Request 的 Header 中設定 UserAgent,最後證實這條思路是行不通的,後來由於時間問題,這個功能就放棄了。如今有個App又有這個需求,看到UC瀏覽器設定中有個UA設定,讓我很是羨慕,果然願意解決問題的人總是幸運的,再網上找到相關文章。瞭解大概兩種思路,第一種是使用私人API,第二種則是iOS SDK內的。第一種這裡就放棄不講了,只能上第二種實現思路。

// 擷取 iOS 預設的 UserAgent,可以很巧妙地建立一個空的UIWebView來擷取:

NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

// 擷取App名稱,我的App有本地化支援,所以是如下的寫法

NSString *appName = NSLocalizedStringFromTable(@"CFBundleDisplayName", @"InfoPlist", nil);

// 如果不需要本地化的App名稱,可以使用下面這句

// NSString * appName = [[NSBundle mainBundle] infoDictionary][@"CFBundleDisplayName"];

NSString *version = [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"];

NSString *customUserAgent = [userAgent stringByAppendingFormat:@" %@/%@", appName, version];

[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":customUserAgent}];

 

// ---------- 隨便寫個測試代碼,記得設定 delegate哦,這隻是測試代碼

UIWebView *webView = [[UIWebView alloc] init];

webView.delegate = self;

[webView loadRequest:[NSURLRequest requestWithURL:[NSURLURLWithString:@"http://www.baidu.com/"]]];

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

NSLog(@"UserAgent = %@", [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]);

}

Xcode 5.1.1  iOS 7.1  模擬器下得到的結果是:

Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) 中華瀏覽器/1.2.2

iOS UIWebView 自訂 UserAgent

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.