iOS 17+ နှင့် macOS 14+ ရှိ WKWebView ပရောက်စီ ဒေတာသိုလှောင်ရာ
iOS 17 သို့မဟုတ် macOS 14 နှင့် အထက်တွင် မြင်ကွင်းကို မဖန်တီးမီနှင့် မသွားလာမီ proxyConfigurations ကို သတ်မှတ်ပါ၊ CONNECT ကြားခံအား လိုအပ်ပါက အထောက်အထားများနှင့်တကွ။
import Network
import WebKit
@available(iOS 17.0, macOS 14.0, *)
@MainActor
func makeWebView(username: String, password: String) -> WKWebView {
let endpoint = NWEndpoint.hostPort(
host: "proxy.example.net", port: 8080)
let proxy = ProxyConfiguration(
httpCONNECTProxy: endpoint, tlsOptions: nil)
proxy.applyCredential(username: username, password: password)
let store = WKWebsiteDataStore.nonPersistent()
store.proxyConfigurations = [proxy]
let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = store
return WKWebView(frame: .zero, configuration: configuration)
}ပြန်ပေးသည့် မြင်ကွင်းသည် သီးသန့် မတည်မြဲသော WKWebsiteDataStore ကို အသုံးပြုသည်။ ရည်ရွယ်ထားသော ဝဘ်ဆိုက်ကို ထိုမြင်ကွင်းမှတစ်ဆင့် ဖွင့်ပါ။ ကြားခံ၏ အကောင့်ကို အသုံးပြုပါ သို့မဟုတ် မည်သည့်အထောက်အထားမျှ မလိုအပ်သော ပရောက်စီအတွက် applyCredential ကို ချန်လှပ်ပါ။ ထို အတည်ပြုမထားသော HTTP ကိုင်းအတွက် HTTP ပရောက်စီ စာရင်း သည် ဒေတာသိုလှောင်ရာအတွက် ကိုယ်စားလှယ်လောင်း အဆုံးမှတ်များကို ပေးသည်။
ဤသိုလှောင်ရာကို မျှဝေသော မြင်ကွင်းတိုင်းသည် ၎င်း၏ ပရောက်စီမူဝါဒကို မျှဝေသည်။ ဤသီးသန့်သိုလှောင်ရာတွင် ခေတ္တ ဝဘ်ဆိုက်ဒေတာလည်း ရှိသောကြောင့် အခြားမြင်ကွင်း၏ လက်ရှိ ဝဘ်ဆိုက်လော့ဂ်အင်ကို အမွေမခံပါ။
ဖွဲ့စည်းမှုကို သွားလာခြင်းမတိုင်မီ ထားရှိပါ။ သိုလှောင်ရာ၏ ပရောက်စီဖွဲ့စည်းမှုကို ပြောင်းလဲခြင်းသည် ၎င်း၏ လက်ရှိကွန်ရက်ချိတ်ဆက်မှုကို အနှောင့်အယှက်ဖြစ်စေနိုင်သည်ဟု WebKit သတိပေးသည်။
သီးခြား URLSession ရယူမှုနှင့် ထို့နောက် loadHTMLString သည် ထို HTML ရယူမှုကိုသာ ဖုံးလွှမ်းသည်။ ပုံများ၊ စကရစ်များနှင့် နောက်ပိုင်းသွားလာမှုသည် မြင်ကွင်း၏ ကွန်ရက်ကို ဆက်လက်အသုံးပြုသည်။ သိုလှောင်ရာသည် ထိုလမ်းကြောင်းကို ဖွဲ့စည်းရန် အများသူငှာ ချိတ်ဆွဲမှုဖြစ်သည်။