先附上結(jié)論:
- WKWebView的customUserAgent會(huì)覆蓋webview本身的userAgent茄猫;
- configuration.applicationNameForUserAgent設(shè)置的userAgent是拼接在webview本身的userAgent后面的链患。
正確設(shè)置自定義userAgent
WKWebViewConfiguration *configuration = [WKWebViewConfiguration new];
configuration.applicationNameForUserAgent = "iOS";
_webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
最近我的項(xiàng)目h5網(wǎng)頁(yè)接入第三方視頻直播(m3u8格式)和flash視頻,出現(xiàn)不能播放的情況。
于是排查問(wèn)題衷敌,懷疑兩個(gè)地方:
- 由于h5網(wǎng)頁(yè)需要注入對(duì)象武翎,引入了XWebView;
- 又由于需要顯示網(wǎng)頁(yè)中的webp圖片,對(duì)WKWebView進(jìn)行了請(qǐng)求攔截.
出現(xiàn)這個(gè)問(wèn)題我首先想到的榜掌,是不是攔截請(qǐng)求無(wú)法處理直播流优妙,先注釋掉請(qǐng)求攔截的代碼,測(cè)試還是不能播憎账。
再想想會(huì)不會(huì)是注入對(duì)象時(shí)交換了一些函數(shù)引起的套硼,于是又注釋掉注入對(duì)象的代碼,測(cè)試還是不能播胞皱。
咋辦呢邪意?直播鏈接用safari、微信反砌、qq都能打開雾鬼,為啥我的app就打不開呢?
靈光一現(xiàn)宴树,會(huì)不會(huì)是userAgent的關(guān)系呆贿?
先不設(shè)置userAgent試試看能播不,嘿森渐!能播做入,還真是這里的問(wèn)題。
測(cè)試
WKWebViewConfiguration *configuration = [WKWebViewConfiguration new];
configuration.applicationNameForUserAgent = "iOS_App";
_webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
如上設(shè)置userAgent抓包得到的內(nèi)容是:
Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) iOS_App
_webView.customUserAgent = "iOS_App";
這種方式設(shè)置userAgent抓包后就只有iOS_App
到這里一切就明了同衣!