WKWebView修改user agent

iOS 9.0 開始,有如下API,可以自定義user agent

@property (nullable, nonatomic, copy) NSString *customUserAgent API_AVAILABLE(macosx(10.11), ios(9.0));

但是有些第三方網(wǎng)頁是通過系統(tǒng)默認(rèn)的user agent來進(jìn)行頁面適配,那么也需要默認(rèn)的那部分user agent,根據(jù)iOS系統(tǒng)不同,user agent也不一樣;
如12.3.1系統(tǒng)對應(yīng)的user agent為:Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;
可以通過js獲取原有agent,然后進(jìn)行賦值操作;如:

__weak typeof(self) weakSelf = self;
[self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable agent, NSError * _Nullable error) {
        NSString *oldAgent = agent;
        // 給User-Agent添加額外的信息
        NSString *newAgent = [NSString stringWithFormat:@"%@;%@", oldAgent, @"custom-app"];
        weakSelf.webView.customUserAgent = newAgent;
      
    }];

如果要進(jìn)行適配iOS8系統(tǒng),則需要使用官方提供的另外一種方法,全局修改user agent

[self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable agent, NSError * _Nullable error) {
        NSString *oldAgent = agent;
        // 給User-Agent添加額外的信息
        NSString *newAgent = [NSString stringWithFormat:@"%@;%@", oldAgent, @"custom-app"];
        // 設(shè)置global User-Agent
        NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newAgent, @"UserAgent", nil];
        [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
    }];

如果在WKWebView所在的ViewController,會出現(xiàn)第二次打開webView的時候,才會起效等問題;這里更傾向于在App delegate中,直接全局修改;申明一個變量webview進(jìn)行user agent的賦值操作;要注意,單獨(dú)聲明的WKWebView的作用域的問題,此方法是異步方法;

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

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

  • iOS12發(fā)布之后,筆者也是隨著更新了iOS12,但是發(fā)現(xiàn)了一個bug,老項目在以前的系統(tǒng)運(yùn)行的好好的,在iOS1...
    Davis_閱讀 7,137評論 5 1
  • 一、基礎(chǔ)知識篇:Http Header之User-AgentUser Agent中文名為用戶代理,是Http協(xié)議中...
    iPhone閱讀 16,246評論 0 13
  • 目錄: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代碼的令狐蔥閱讀 4,509評論 0 2
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,621評論 1 32
  • 《若畫請罪》 舊情往組故過孤, 刀請詩收勸說由。 憐惜別新愛真癡, 玩戲圈涼琵琶頤。 和筆紙上點(diǎn)點(diǎn)花, 一畫帶去曾...
    春城怡景閱讀 609評論 8 19

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