天天看點

iOS - 修改UserAgent (WKWebView & UIWebView)

今天說說 ‘UserAgent’ 這個特殊字元吧,因為我們背景有個判斷是如果 ‘UserAgent’ 中如果包含字元 ‘iPad’ 那麼就是1,否則是0。

在 ‘iPad’ 更新了 ‘iPadOS 13’ 以後 UserAgent 的内容被更改了, 之前字元串中的 'iPad' 更改為了 'Macintosh' , 是以很自然的客戶有些功能不能使用了,下面我們簡單說下這個問題吧,當然了寫這篇部落格的時候我相信,我的客戶們已經在APP中自由的翺翔了~ 祝你們幸福鴨~ 

首先,介紹下 'UserAgent' 

User Agent (使用者代理),簡稱 UA,它是一個特殊字元串頭,使得伺服器能夠識别客戶使用的作業系統及版本、CPU 類型、浏覽器及版本、浏覽器渲染引擎、浏覽器語言、浏覽器插件等。

是以你可以了解成一個 特殊字元,這個字元裡有很多的屬性來代表它的身份, iOS 這邊具體有什麼呢 你猜猜看?

第二,我把iPad 12 和 13的 UserAgent 截圖了了解一下就好,從内容上看蘋果真的要把 iPad 當 Mac 玩了。

iOS - 修改UserAgent (WKWebView & UIWebView)

更新前,系統是 iPad OS  12.4.1. 

iOS - 修改UserAgent (WKWebView & UIWebView)

更新後  ‘Macintosh’.

第三,你要知道 ‘UserAgent’ 是可以手動更改的,WkWebView 和 UIWebView 不一樣下面這兩種方法都寫一下,另外提示一下 ‘UIWebView’ 不要再用了。

WKWebView *WKWeb = [[WKWebView alloc] init];
    //一般的時候,我們可以通過JS 調用到userAgent,然後增加一些内容後指派。
    [WKWeb evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
        NSString *oldUserAgent = result;
        NSString *newUserAgent = [NSString stringWithFormat:@"%@ %@",oldUserAgent,@"TheNewWordForUserAgent"];
        webView.myWKWebView.customUserAgent = newUserAgent;
    }];
    //二班的小夥伴,不需要以前的内容那麼直接改。
    WKWeb.customUserAgent = @"這個屬性可以直接調用,調用直接改比UIWebView 友善多了";
           
//了解一下就可以
   UIWebView *UIWeb = [[UIWebView alloc] init];
   NSString *oldAgent = [UIWeb stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
   NSString *newAgent = [NSString stringWithFormat:@"%@ %@",oldAgent,@"TheNewWordForUserAgent"];
    
   NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:newAgent, @"UserAgent", nil];
   [[NSUserDefaults standardUserDefaults] registerDefaults: dic];
   [[NSUserDefaults standardUserDefaults] synchronize];
           

好了,改與不改看需求,做與不做看自己。

感謝觀看,學以緻用更感謝!