๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/UIKit

[iOS] WKWebView - ์•ฑ์—์„œ ์›น๋ทฐ๋ฅผ ๋„์šฐ์ž

by Danna 2022. 4. 30.
728x90
728x90

๐Ÿ“ฑWKWebView Class

WKWebView ๊ฐ์ฒด๋Š” ์•ฑ ๋‚ด๋ถ€์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

 

WKWebView ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๋ทฐ์— HTML, CSS, JavaScript ๋กœ ํ‘œํ˜„๋˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ง•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ด์•ผํ•  ๊ฒฝ์šฐ, ์›น์•ฑ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด์—์š”. ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๋ณด๋‹ค๋Š” ์›น์•ฑ์€ ์›น ์ฝ˜ํ…์ธ ๋งŒ ๋ฐฐํฌํ•˜๋ฉด ๋˜๋‹ˆ ์ข€๋” ์œ ์—ฐํ•œ ๋Œ€์ฒ˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒ ์ฃ .

 

๐Ÿ‘‹ WKWebView Delegate 

WKWebView ๋Š” delegate ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์œ ์ €์˜ ๊ฒฝํ—˜๊ณผ ํƒ์ƒ‰์„ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์œ ์ €์˜ ๊ฒฝํ—˜์€ UI delegate, ํƒ์ƒ‰์€ navigation delegate ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ์ดํ•ดํ–ˆ์–ด์š”. ๐Ÿค” 

 

navigation delegate (WKNavigationDelegate) ๋ฅผ ํ†ตํ•ด ์œ ์ €๊ฐ€ ์›น๋ทฐ ์ฝ˜ํ…์ธ  ๋‚ด์˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•  ๋•Œ ๋ฐ˜์‘ํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์กฐ๊ฑด์ด ์•„๋‹Œ ํŽ˜์ด์ง€๋“ค์€ ํƒ์ƒ‰์ด ๋˜์ง€ ์•Š๋„๋ก ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

UI delegate (WKUIDelegate) ๋ฅผ ํ†ตํ•ด ์›น ์ฝ˜ํ…์ธ  ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด alert, context menus ๋“ฑ์˜ native UI ์š”์†Œ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

navigation, UI ์—์„œ ํŠน์ •ํ•œ ๊ตฌํ˜„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ViewController ๊ฐ€ delegate ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ณ  ๊ด€๋ จ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

๐Ÿ‘ฃ Embed a WKWebView object 

View Controller ์˜ ๋ทฐ ๊ณ„์ธต์— WKWebView ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , URL ๋˜๋Š” HTML ์„ ๋กœ๋“œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์›น๋ทฐ์˜ ์„ค์ •์„ ์ปค์Šคํ…€ํ•˜๊ธฐ ์œ„ํ•ด WKWebViewConfiguration ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด, ์›น๋ทฐ์˜ ์ƒ์„ฑ์ž์˜ ์ธ์ž๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

WKWebViewConfiguration ๋Š” WKWebView ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด๋กœ, ์ปค์Šคํ…€ URL scheme ์„ ์œ„ํ•œ ํ•ธ๋“ค๋Ÿฌ ์ง€์ •, ์ฟ ํ‚ค ๊ด€๋ฆฌ, ์›น ์ฝ˜ํ…์ธ ์˜ ์—ฌ๋Ÿฌ ์„ค์ •๋“ค์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์Šคํ† ๋ฆฌ๋ณด๋“œ์˜ attributes inspector ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด์—์š”

ContextMenus example storyboard

 

๐Ÿƒ‍โ™€๏ธ Loading Web Content

์›น ์ฝ˜ํ…์ธ ๋ฅผ ๋กœ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต URL ๋กœ ๋กœ๋“œํ•˜๋Š” ์ผ์ด ๋งŽ์ง€ ์•Š์„๊นŒ ์‹ถ์–ด์š”! 

load ๋ฉ”์†Œ๋“œ ์™ธ์— reload, stopLoading ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. 

 

WKWebView ์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋ฏธ๋””์–ด ์žฌ์ƒ๊ด€๋ จ, ์นด๋ฉ”๋ผ์™€ ๋งˆ์ดํฌ ์„ค์ • ๊ด€๋ จ, ํŽ˜์ด์ง€๋‚ด ์ฝ˜ํ…์ธ  ์ฐพ๊ธฐ, ์›นํŽ˜์ด์ง€๊ฐ„ Navigating, JavaScript ์‹คํ–‰์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์ฐพ์•„๋ณด์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„์š”. WKNavigationDelegate, WKUIDelegate ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ๋ฒˆ์— ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿฅบ

 

 

๐ŸŽ ๊ณต์‹ ๋ฌธ์„œ ์ฐธ๊ณ 

728x90
728x90