開(kāi)發(fā)需求:我們?cè)陂_(kāi)發(fā)中,往往需要跳轉(zhuǎn)到H5專題界面展示一些H5的活動(dòng)界面,這個(gè)時(shí)候往往就會(huì)遇到如何實(shí)現(xiàn)原生的登錄狀態(tài)與H5同步的問(wèn)題重窟。
實(shí)現(xiàn)方法一,可以通過(guò)原生與JS交互惧财,將token傳給JS巡扇,再通過(guò)前端開(kāi)發(fā)人員獲取token刷新?tīng)顟B(tài)。但這種方法有一個(gè)弊端垮衷,首先請(qǐng)求界面完成后才給前端傳token厅翔,傳完token前端獲取到token后還要刷新登錄狀態(tài)。這個(gè)時(shí)候搀突,加載進(jìn)度條會(huì)加載兩次知给,影響了用戶體驗(yàn),并不是完美的解決方法描姚。
實(shí)現(xiàn)方法二:(極力推薦)將本地token添加到WKWebView的請(qǐng)求頭中,一步到位實(shí)現(xiàn)H5與原生登錄狀態(tài)同步戈次。實(shí)現(xiàn)代碼如下:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.url]];
NSString *token = [WAWHNetworkHelper getToken];//獲取本地保存的token
if(token.length){
NSString *domain = @"192.168.1.183";//獲取主域名
[request addValue:[NSString stringWithFormat:@"token=%@;path=/;domain=%@;HttpOnly",token,domain] forHTTPHeaderField:@"Cooike"];
}
[self.wk_WebView loadRequest:request];
例如:token=7fa9f4d0f68d4bf1adb803983bf0f985; path=/; domain=192.168.1.183; HttpOnly 這是個(gè)固定格式轩勘,在iOS端需要將本地token傳到瀏覽器內(nèi)核中,需要這種格式怯邪。token=你從后臺(tái)拿到的token绊寻,domain=你的域名或ip,需要特別注意沒(méi)有https://或http://等前綴悬秉,其余格式是固定格式澄步。