項目中會遇到多個APP或小程序共用相同的網(wǎng)頁內(nèi)容,服務(wù)器需要區(qū)分當(dāng)前打開的網(wǎng)頁是在那個APP中打開的,此時可以通過設(shè)置webview的UserAgent實現(xiàn)判斷
- (void)setWebViewUA{//此部分內(nèi)容需放到setWebUI內(nèi)
if (@available(iOS 12.0, *)){
//由于iOS12的UA改為異步,所以不管在js還是客戶端第一次加載都獲取不到,所以此時需要先設(shè)置好再去獲?。?、如下設(shè)置;2、先在AppDelegate中設(shè)置到本地)
NSString *userAgent = [self.webView valueForKey:@"applicationNameForUserAgent"];
NSString *newUserAgent = [NSString stringWithFormat:@"%@%@",userAgent,@"自定義UA內(nèi)容"];
[self.webView setValue:newUserAgent forKey:@"applicationNameForUserAgent"];
}
[self.webView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
NSString *userAgent = result;
if ([userAgent rangeOfString:@"自定義UA內(nèi)容"].location != NSNotFound) {
return ;
}
NSString *newUserAgent = [userAgent stringByAppendingString:@"自定義UA內(nèi)容"];
// NSLog(@"%@>>>%@>>>>>",userAgent,newUserAgent);
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent,@"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
[[NSUserDefaults standardUserDefaults] synchronize];
//不添加以下代碼則只是在本地更改UA,網(wǎng)頁并未同步更改
if (@available(iOS 9.0, *)) {
[self.webView setCustomUserAgent:newUserAgent];
} else {
[self.webView setValue:newUserAgent forKey:@"applicationNameForUserAgent"];
}
}]; //加載請求必須同步在設(shè)置UA的后面
}
loadRequest需放到設(shè)置UA之后
定義UA前
Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
定義UA后
Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148自定義UA內(nèi)容