一,首先介紹一下在mac上用safari調(diào)試ios手機的移動端頁面
第一步:打開iphone找到以下頁面,流程是:【設(shè)置】->【Safari】->【高級】->
開啟【W(wǎng)eb檢查器】 ,如圖1、圖2
第二步:打開Mac上Safari,流程是【選中Safari】->【偏好設(shè)置】->【高級】->【在菜單欄中顯示“開發(fā)”菜單】勾選,如圖3,4


第三步:用數(shù)據(jù)線將iphone和mac連接起來,在手機app上打開一個web網(wǎng)頁,在電腦的safari中按照流程執(zhí)行:【開發(fā)】->【手機名稱】->【正在調(diào)試的網(wǎng)站】如圖5,6

第四步:點擊上圖的192.168.100.116-rechargelist web頁面,出來當前頁面的資源,時間線,存儲空間等。如圖5,6
二,正式說今天遇到的問題,方法一json存不進去,方法二可以存進去
方法一:
let data = try JSONSerialization.data(withJSONObject: ["id":GlobalData.shared.logInModel.userId, "phone":GlobalData.shared.logInModel.mobile], options: .prettyPrinted)
let userJson = String(data:data, encoding: .utf8) ?? "{}"
let script = WKUserScript(source:"localStorage.setItem('wrongUserJson','\(userJson)') ;", injectionTime: .atDocumentStart, forMainFrameOnly:false)
configuration.userContentController.addUserScript(script)
userJson = "{\n? \"id\" : \"376AA08A44F613A5960BBA9708DE6E057318626B4961F35A6632E2F9140A33E60031043B73978C1344010d16\",\n? \"phone\" : \"18616655261\"\n}"
之所以userJson串是這種帶\n的格式,是因為JSONSerialization.data(withJSONObject: ["id":GlobalData.shared.logInModel.userId, "phone":GlobalData.shared.logInModel.mobile], options: .prettyPrinted)中的options是NSJSONWritingPrettyPrinted的原因,蘋果官網(wǎng)資料是這樣說的“為了使打印出來的json串格式標準一些,添加了一些空格和\n符號”,這樣的json字符串存不進去cookie和localStroge。
方法二:
let data = try JSONSerialization.data(withJSONObject:["id":GlobalData.shared.logInModel.userId ,"phone":GlobalData.shared.logInModel.mobile], options:JSONSerialization.WritingOptions(rawValue:0))
let userJson = String(data:data, encoding: .utf8) ?? "{}"
let script = WKUserScript(source:"localStorage.setItem('rightUserJson','\(userJson)') ;", injectionTime: .atDocumentStart, forMainFrameOnly:false)
configuration.userContentController.addUserScript(script)
userJson =? "{\"id\":\"376AA08A44F613A5960BBA9708DE6E057318626B4961F35A6632E2F9140A33E60031043B73978C1344010d16\",\"phone\":\"18616655261\"}"
這種格式的json字符串能存進去,如下圖

fileprivate func creatUserCookie() -> HTTPCookie? {
let data = try JSONSerialization.data(withJSONObject: ["id":GlobalData.shared.logInModel.userId, "phone":GlobalData.shared.logInModel.mobile], options:JSONSerialization.WritingOptions(rawValue:0))
let userJson = String(data: data, encoding: .utf8) ??? "{}"
let properties: [HTTPCookiePropertyKey:Any] = [
? ? ? ? ? ? HTTPCookiePropertyKey.name: "rightUserJson",
? ? ? ? ? ? HTTPCookiePropertyKey.value: userJson,
? ? ? ? ? ? HTTPCookiePropertyKey.domain: "https://www.baidu.com",
? ? ? ? ? ? HTTPCookiePropertyKey.path: "/"
? ? ? ? ]
? ? ? ? returnHTTPCookie(properties: properties)
? ? }
if let userCookie = creatUserCookie(), let cookieStr = HTTPCookie.requestHeaderFields(with: [userCookie])["Cookie"] {
? ? ? ? ? ? // 設(shè)置頁面請求的cookie
? ? ? ? ? ? request.addValue(cookieStr, forHTTPHeaderField:"Cookie")
? ? ? ? ? ? let cookieScript = WKUserScript(source:"document.cookie = '\(cookieStr)' ;", injectionTime: .atDocumentStart, forMainFrameOnly:false)
? ? ? ? ? ? configuration.userContentController.addUserScript(cookieScript)
? ? ? ? }
json字符串存cookie,也成功存進去,如下圖

寫得比較匆忙,如有錯誤請指正,謝謝。