初探android中webview的UA(User-Agent)

??對于很多初步接觸webview的朋友來說,不管你是自己代碼中寫webview,還是接入第三方sdk,經(jīng)常會在需求中看到這么一句話:

如APP使用內(nèi)置瀏覽器需在 webview中設(shè)置獨立 UA 標識,并告知平臺聯(lián)系人

??那么,到底什么是UA?UA在代碼里又是怎么設(shè)置的?

1.什么是UA?

??UA的全稱是User-Agent,中文名為用戶代理,是Http請求協(xié)議中請求頭的一部分,這里的請求包括GET請求和POST請求。
??下面我們來看,UA到底是由什么組成的?他的組成部分是什么?

??先說結(jié)論,絕大多數(shù)網(wǎng)頁瀏覽器使用的User-Agent值如下:

Mozilla/[version]([system and browser information])[platform]([platform details])[extensions]。

??例如,iPad上的Safari使用的UA如下:

Mozilla/5.0(iPad; U; CPU OS 3_2_1 like Mac OS X; en-us)AppleWebKit/531.21.10(KHTML, like Gecko)Mobile/7B405

??這個字符串的組成如下:

字符串 說明
Mozilla/5.0 偽裝成Mozilla排版引擎的瀏覽器以達到兼容
(iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) 瀏覽器所運行的系統(tǒng)的詳細信息
AppleWebKit/531.21.10 瀏覽器所使用的平臺
(KHTML, like Gecko) 瀏覽器平臺的細節(jié)
Mobile/7B405 被瀏覽器用于指示特定的直接由瀏覽器提供或者通過第三方提供的可用的增強功能。這方面的一個實例是Microsoft Live Meeting(它注冊了一個擴展以使Live Meeting服務知道該軟件是否已經(jīng)安裝上,這意味著它可以為加入會議提供一個簡化的體驗。)

2.UA有什么作用?

1) 在手機端/pc端,可以通過UA來判斷不同的設(shè)備,從而可以顯示不同的排版,進而給用戶提供更好的體驗
??例如:用手機訪問百度和pc端訪問的頁面排版是不一樣的,這些就是百度根據(jù)訪問者的UA來判斷的。

2) 通過UA,進行信息統(tǒng)計,主要是用于渠道統(tǒng)計
??例如:在之前的工作中碰到過類似情況,在app中接入廣告的sdk,當用戶點擊廣告圖片時就需要通過webview進行詳細廣告頁面的跳轉(zhuǎn),這時候就需要在webview中進行UA的自定義設(shè)置了,這樣后臺廣告平臺的人員就可以通過UA判斷是哪個客戶端(安卓/蘋果),哪個瀏覽器的客戶,進而進行客戶端的統(tǒng)計。

3.android中的UA長什么樣?

??例子1:

Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13

??因為這個UA字符串中沒有mobile,猜測可能是平板,驗證發(fā)現(xiàn)是摩托羅拉的XOOM平板。

??例子2:

Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

??這個UA包含了mobile和android,所以這臺應該是Nexus One手機。

??做個總結(jié),大家可以參照下圖來對應查找判斷android設(shè)備:


android_UA.jpeg

4.android中怎么獲取和設(shè)置UA?

1. 獲取UA
??獲取UA的方式非常簡單,只要在webview控件的settings上獲取即可:

  WebSettings settings = mWebView.getSettings();
  String userAgentString = settings.getUserAgentString();

2. 自定義設(shè)置UA
設(shè)置UA一般有兩種方法:
1)尾部添加字段

  String ua = mWebView.getSettings().getUserAgentString();//原來獲取的UA
  mWebView.getSettings().setUserAgentString(ua+ "自定義內(nèi)容");

??自定義內(nèi)容可以一般填入客戶端或appversion ,
??例如 +" \ platform: android; \appversion: 2.1.3 ;"

2)替換原來的UA

 String ua = mWebView.getSettings().getUserAgentString();//原來獲取的UA
 mWebView.getSettings().setUserAgentString(ua.replace("Android","HFWSH_USER Android"));

??這樣寫,可以將原來的ua替換為新的ua。


參考文章:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基礎(chǔ)知識篇:Http Header之User-AgentUser Agent中文名為用戶代理,是Http協(xié)議中...
    iPhone閱讀 16,243評論 0 13
  • 一、基礎(chǔ)知識篇:Http Header之User-AgentUser Agent中文名為用戶代理,是Http協(xié)議中...
    大牧莫邪閱讀 66,534評論 3 21
  • 瀏覽器User-Agent的詳細信息 PC端: safari5.1–MAC User-Agent:Mozilla/...
    b2e16cc43137閱讀 768評論 0 0
  • 在開發(fā)時我們可能遇到這樣一個問題:如何使WebView打開網(wǎng)頁時以平板或者電腦模式打開,而不是以手機模式。其實We...
    coder小黃人閱讀 6,104評論 0 2
  • 所有的黑暗都會天明 所有的不快都會過去 絕望不會是遙遙無期 頭破血流的故事 無語凝成詩 累了就睡大覺 醒來就加油搞...
    復興火炬書友會閱讀 199評論 0 0

友情鏈接更多精彩內(nèi)容