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

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

如APP使用內置瀏覽器需在 webview中設置獨立 UA 標識,并告知平臺聯系人

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

1.什么是UA?

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

??先說結論,絕大多數網頁瀏覽器使用的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) 瀏覽器所運行的系統的詳細信息
AppleWebKit/531.21.10 瀏覽器所使用的平臺
(KHTML, like Gecko) 瀏覽器平臺的細節
Mobile/7B405 被瀏覽器用于指示特定的直接由瀏覽器提供或者通過第三方提供的可用的增強功能。這方面的一個實例是Microsoft Live Meeting(它注冊了一個擴展以使Live Meeting服務知道該軟件是否已經安裝上,這意味著它可以為加入會議提供一個簡化的體驗。)

2.UA有什么作用?

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

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

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,猜測可能是平板,驗證發現是摩托羅拉的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手機。

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


android_UA.jpeg

4.android中怎么獲取和設置UA?

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

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

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

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

??自定義內容可以一般填入客戶端或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。


參考文章:

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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