今天說說 ‘UserAgent’ 這個特殊字元吧,因為我們背景有個判斷是如果 ‘UserAgent’ 中如果包含字元 ‘iPad’ 那麼就是1,否則是0。
在 ‘iPad’ 更新了 ‘iPadOS 13’ 以後 UserAgent 的内容被更改了, 之前字元串中的 'iPad' 更改為了 'Macintosh' , 是以很自然的客戶有些功能不能使用了,下面我們簡單說下這個問題吧,當然了寫這篇部落格的時候我相信,我的客戶們已經在APP中自由的翺翔了~ 祝你們幸福鴨~
首先,介紹下 'UserAgent'
User Agent (使用者代理),簡稱 UA,它是一個特殊字元串頭,使得伺服器能夠識别客戶使用的作業系統及版本、CPU 類型、浏覽器及版本、浏覽器渲染引擎、浏覽器語言、浏覽器插件等。
是以你可以了解成一個 特殊字元,這個字元裡有很多的屬性來代表它的身份, iOS 這邊具體有什麼呢 你猜猜看?
第二,我把iPad 12 和 13的 UserAgent 截圖了了解一下就好,從内容上看蘋果真的要把 iPad 當 Mac 玩了。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyYzM5AzNxQTM0ADMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
更新前,系統是 iPad OS 12.4.1.
更新後 ‘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];
好了,改與不改看需求,做與不做看自己。
感謝觀看,學以緻用更感謝!