suvera-dev ๐Ÿฅฆ

iOS) WKWebView ๋ณธ๋ฌธ

iOS

iOS) WKWebView

suvera 2022. 3. 28. 07:06

๐Ÿ’ก WKWebView๊ฐ€ ๋‚˜์˜จ ๋ฐฐ๊ฒฝ

iOS 8 ์•„๋ž˜ ๋ฒ„์ „์—์„œ๋Š” UIWebView๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ์„ฑ๋Šฅ์ƒ์˜ ๋ฌธ์ œ๋กœ deprecated ๋˜์—ˆ๋‹ค๊ณ  ํ•จ

iOS 8 ๋ถ€ํ„ฐ WKWebView๊ฐ€ ๋„์ž…๋˜์—ˆ๊ณ , ์ด์œ ๋Š” HTML์˜ ์ปจํ…์ธ ๋ฅผ ํ‘œ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ ํƒ„์ƒ !

 

โ“ UIWebView์™€ ์ฐจ์ด๊ฐ€ ๋ชฌ๋ฐ??

์ด๋ ‡๊ฒŒ ๋ช‡ ๊ฐœ์˜ ์ฃผ์ œ๋กœ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ, ์„ฑ๋Šฅ ๋ฉด์—์„œ WKWebView๊ฐ€ ์šฐ์ˆ˜ํ•ด๋ณด์ด๋„ค์šฉ !

๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ์—์„œ๋„ ๋” ์ด์ƒ ์ง€์›์„ ์•ˆํ•œ๋‹ค๊ณ  ํ•˜๋‹ˆ, WKWebView๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.. ! ใ…Ž

 

๐Ÿ‘Œ๐Ÿป ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด..

WKWebView๋Š” ์•ฑ๊ณผ๋Š” ๋ณ„๋„ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค !

์•ฑ์˜ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  WKWebView์— ๋ณ„๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด ๋ถ„๋ฆฌํ•˜๋ฏ€๋กœ

WKWebView ๊ฐ€ ์ค‘๋‹จ๋˜๋”๋ผ๋„ ์•ฑ์ด ์ค‘๋‹จ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค !! ์™€์›… 

๋˜, ์›น๋ทฐ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด ์•ฑ์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์ถฉ๋Œํ•˜๊ฒŒ ๋˜์–ด

ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค !

๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์•Œ์•„๋ณด๋‹ˆ WKWebView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š”

๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์—์„œ ์›น๋ทฐ๋ฅผ ์•ฑ์˜ UI์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ 

์—ฌ๋Ÿฌ ์ฝœ๋ฐฑํ•จ์ˆ˜๋“ค๋กœ ์›น์—์„œ์˜ ์ƒํƒœ๋“ค์— ๋Œ€ํ•œ ์‹œ์ ์„ ์•Œ์•„์„œ ์ปค์Šคํ…€ํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™‚

 

 


 

์ฆ‰, ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์›น์˜ ์š”์†Œ๋ฅผ ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•  ๋•Œ

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ !

 

Web๊ณผ์˜ ์—ฌ๋Ÿฌ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, WKUserController๋ฅผ ์‚ฌ์šฉํ•ด์„œ

์›น์œผ๋กœ๋ถ€ํ„ฐ ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๊ณ , ์•ฑ์—์„œ ์›น์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค !

๋˜ํ•œ, WKUIDelegate๋ฅผ ํ™œ์šฉํ•ด์„œ ์•ฑ์—์„œ ์›น๋ทฐ๊ฐ€ Alert ๋ฉ”์„ธ์ง€๋ฅผ ํ˜ธ์ถœํ–ˆ์„๋•Œ, ์•ฑ์—์„œ ์ฒ˜๋ฆฌ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค !

WKNavigationDelegate๋ฅผ ํ™œ์šฉํ•ด์„œ๋Š” ์›น๋ทฐ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ๋“ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

( ๋กœ๋”ฉ์„ ์™„๋ฃŒํ–ˆ์„๋•Œ ํ˜น์€ ๋กœ๋”ฉ์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋“ฑ์˜ ์ฒ˜๋ฆฌ )

 

๐ŸŒ€ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋กœ ์›น๋ทฐ ๋„์šฐ๋Š” ๋ฐฉ์‹ !!

import WebKit

class ViewController: UIViewController {

    private lazy var webView: WKWebView = {
        let webView = WKWebView(frame: self.view.frame)
        webView.allowsBackForwardNavigationGestures = true
        webView.uiDelegate = self
        webView.navigationDelegate = self
        return webView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
                loadWeb()
    }

    func loadWeb() {
        self.view.addSubview(webView)

        guard let url = URL(string: "https://apple.com") else { return }
        let request = URLRequest(url: url)

        webView.load(request)
    }
}
extension ViewController: WKUIDelegate {}
extension ViewController: WKNavigationDelegate {}

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์›น๋ทฐ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋“ค์„ delegate๋กœ ์„ ์–ธํ•ด์„œ ๋ฐ›์•„์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค !

์‚ฌํŒŒ๋ฆฌ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋’ค๋กœ๊ฐ€๊ธฐ, ๊ณต์œ ํ•˜๊ธฐ , url์„ ์ž…๋ ฅํ•˜๋Š” ์ฐฝ๋“ค์ด ์—†์œผ๋ฏ€๋กœ,

์ปค์Šคํ…€ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค !

 

์•ฑ ์•ˆ์—์„œ ์›น์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋™์ž‘์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š”๋ฐ,

์›น๊ณผ ์•ฑ ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ ๋“ค์ด ๋งŽ๊ณ 

์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ธ๋“ค๋งํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค ! !

 

 

 

1. WKUIDelegate : UI ์š”์†Œ๋“ค์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ

 

WKUIDelegate๋Š” ๋ง๊ทธ๋Œ€๋กœ UI์š”์†Œ๋“ค์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, ์ƒˆ๋กœ์šด ์›น ๋ทฐ ์ฐฝ์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋‚˜ alert๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ ์“ฐ์ž…๋‹ˆ๋‹ค! ์•„๋ž˜๋Š” ์ฃผ๋กœ ์ž์ฃผ ์“ฐ์ด๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ๊ฐ€์ ธ์™€ ๋ดค์Šต๋‹ˆ๋‹น

// ์ƒˆ ์ฐฝ์—ด๊ธฐ
// ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ, 
func webView(_ webView: WKWebView, 
    createWebViewWith configuration: WKWebViewConfiguration, 
                  for navigationAction: WKNavigationAction, 
       windowFeatures: WKWindowFeatures) -> WKWebView? {

        //navigationAction๋‚ด์— ์ƒˆ๋กœ ์š”์ฒญํ•˜๋Š” webview์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.
        //์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ request๋ฅผ ๋ฐ›์•„ ์ƒˆ ์›น๋ทฐ๋ฅผ ๋„์šฐ๊ฑฐ๋‚˜ ๊ธฐ์กด ์›น๋ทฐ์— load ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 
        if let url = navigationAction.request.url {
        }

}

//Alert
func webView(_ webView: WKWebView, 
runJavaScriptAlertPanelWithMessage message: String, 
     initiatedByFrame frame: WKFrameInfo, 
    completionHandler: @escaping () -> Void) {

        //์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ‘œ์‹œํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ ์–ผ๋Ÿฟ์— ๋Œ€ํ•ด์„œ๋„ ๋ณ„๋„ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.
        //์ด๊ณณ์—์„œ message๋ฅผ ํฌํ•จํ•˜๋Š” UIAlertController๋ฅผ ์ƒ์„ฑํ•ด ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
}

//Confirm
//Confirmd์ธ๋ฐ ์œ„์˜ Alert ๋ฐฉ์‹์œผ๋กœ completionHandler๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
func webView(_ webView: WKWebView, 
runJavaScriptConfirmPanelWithMessage: String, 
initiatedByFrame: WKFrameInfo, 
completionHandler: (Bool) -> Void) {

}

 

2. WKNavigationDelegate : ์›น ๋ทฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„

๊ฐ์ง€ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ

 

WKWebView์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์›น์—์„œ ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ •๋ง ์›น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์•ž์œผ๋กœ ๊ฐ€๊ธฐ, ๋’ค๋กœ๊ฐ€๊ธฐ๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  WKNavigationDelegtae๋ฅผ ์ฑ„ํƒํ•ด์„œ ์›น๋ทฐ์˜ ๋กœ๋“œ ์‹œ์ ๋“ค์— ๋Œ€ํ•œ ์ฝœ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค !

 

๐Ÿ“Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋“ค

 

webView(_:decidePolicyFor:descisionHandler:) ์›น ํŽ˜์ด์ง€์˜ ํƒ์ƒ‰ ํ—ˆ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •

webView(_:didStartProvisionNavigation:) ์›น๋ทฐ๊ฐ€ ์ฝ˜ํ…์ธ  ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ๋•Œ ํ˜ธ์ถœ

webView(:didCommit:) ์›น๋ทฐ๊ฐ€ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ• ๋•Œ ํ˜ธ์ถœ

webView(_:didFinish:) ์›น๋ทฐ๊ฐ€ ์ฝ˜ํ…์ธ  ๋ฐ›๊ธฐ๋ฅผ ์™„๋ฃŒํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ

webView(_:didFail:withError:) ์›น ๋ทฐ๊ฐ€ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐ›๊ธฐ ์‹คํŒจํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ

 

 

๐Ÿ’ฅ WKNavigationDelegate ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฌœ ์•„๋ž˜ ํฌ์ŠคํŒ… ์ฐธ๊ณ  !

 

[Swift iOS] WKNavigationDelegate ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•ฑ์—์„œ webview ํƒ์ƒ‰ ๋ฐ ๊ด€๋ฆฌ

WKNavigationDelegate : Methods for accepting or rejecting navigation changes, and for tracking the progress of navigation requests. ์›น๋ทฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์„ ๊ฐ์ง€ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ...

hongssup.tistory.com

 

3. WKWebViewConfiguration : ์›น ๋ทฐ ๊ตฌ์„ฑ์— ๊ด€ํ•œ ์˜ต์…˜ ์ง€์ •ํ•˜๊ธฐ

 

๐ŸŒฟ WKWebView์˜ ์š”์†Œ ์ค‘์—๋Š” configuration: WKWebViewConfiguration์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”.

์ด ํ”„๋กœํผํ‹ฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์›น ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค !

์ฆ‰, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜ ๊ฐ’๋“ค์„ ์ฃผ์–ด์„œ ์›น์—์„œ ์ œํ•œ๋˜๋Š” ํ•ญ๋ชฉ์ด๋‚˜ ์ด๋Ÿฐ ๊ฐ’์— ๋Œ€ํ•œ ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

( ์ œ๊ฐ€ ์ฐพ์•„๋ณธ ์˜ˆ์‹œ๋กœ๋Š”,, ์›น ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ์†๋„, ๋ฏธ๋””์–ด ์žฌ์ƒ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋“ฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹น.. ? )

๋˜ํ•œ WebView์— JavaScript ์ฝ”๋“œ๋ฅผ ์ฃผ์ž…ํ•˜๊ฑฐ๋‚˜ JavaScript๋กœ๋ถ€ํ„ฐ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์•„์™€์„œ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

์•—์ฑ ์ฑ  ๊ธ€๊ณ  WKWebViewConfiguration์€ WKWebView๊ฐ€ ์ฒ˜์Œ ์ดˆ๊ธฐํ™”๋  ๋•Œ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

WKWebView๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„์—๋Š” ์ด ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์†์„ฑ๋“ค์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ~~ !

 

 

์• ํ”Œ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ์—์„œ ์„ค์ • ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๋“ค๊ณผ ์–ด๋–ค ์˜ต์…˜๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…๋˜์–ด์žˆ๋‹ต๋‹ˆ๋‹ค !

 

Apple Developer Documentation

 

developer.apple.com

 

4. JavaScript ํ†ต์‹  !!

 

๐Ÿ“–  ์‹ค์ œ๋กœ ์›น๋ทฐ๊ฐ€ ๋งŽ์ด ์žˆ๋Š” ์•ฑ์˜ ๊ฒฝ์šฐ์—” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํ†ต์‹ ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

WKWebView์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[iOS SWIFT] WKWebview์—์„œ WKUserContentContoller ๋ฅผ JavaScript ์—ฐ๋™ (Native <-> JavaScript) ํ†ต์‹ 

PG์‚ฌ ๊ฒฐ์ œ ๋ฐ PASS๋ฅผ ํ†ตํ•œ ๋ณธ์ธ ์ธ์ฆ ํ•  ๋•Œ Native iOS ์•ฑ๊ณผ JavaScript ์—ฐ๋™์ด ํ•„์š”ํ•˜๋‹ค. ์ด์œ ๋Š” ๊ฒฐ์ œ ๋ฐ ๋ณธ์ธ ์ธ์ฆ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€ ๋˜๋Š” ์‹คํŒจํ–ˆ์„ ๋•Œ ์•ฑ ์ž์ฒด์—์„œ ๋Œ€์‘์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. import WebKit //

blog.lovenfree.com

์ด ๋ธ”๋กœ๊ทธ๋Š” ์›น๋ทฐ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ†ต์‹ ์„ ์ „์ฒด์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ€์ ธ์™€๋ดค์ˆฉ๋‹ˆ๋‹น

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ†ต์‹ ์€ ์Œ ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ณ  ์ดํ•ด์•ˆ๋˜๋Š”๋ฐ ์ผ๋‹จ......๊ฐ€์ ธ์™”๊ณ ... ์ฐพ์•„๋ณด๋‹ค ๋ณด๋‹ˆ๊นŒ ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค ์ฟ„์ฟ„..

 

 

 

 

- ์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ !!

 

[iOS] WKWebView (1) - ์›น ๋ทฐ ์‚ฌ์šฉํ•˜๊ธฐ

์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด๋ฒˆ์— ์›น ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด์•ผํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค :) ๊ทธ๋ž˜์„œ ์ด ์ฐธ์— WKWebView๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ด๊ธฐ๋„ ํ•ด์„œ ํ™•์‹คํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด๋†“์œผ๋ฉด ๋„์›€์ด ๋˜

dongminyoon.tistory.com

 

WKWebView

์ฐธ๊ณ ๋‚ด์šฉswift. WKWebView์˜ MessageHandler์ด์šฉํ•˜๊ธฐApple Developer DocumentationiOS ์•ฑ ๋‚ด์—์„œ ์›น์„ ๋„์šธ ์ˆ˜ ์žˆ๋Š” View๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” ์›น์— ๋Œ€ํ•œ ๋„๋ฉ”์ธ ์ง€์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์•„ ๊ทธ๋™์•ˆ ์™ธ์ฃผ ๊ฒฝํ—˜์„ ํ†ตํ•ด iOS WebVie

velog.io

 

Comments