iOS wkWebView添加UserAgent(UA)

項目中會遇到多個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)容

?著作權(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)容

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