์ƒˆ์†Œ์‹

๐Ÿ“ฑ iOS/-- UIKit

(iOS) - WebView : Safari ํ˜ธ์ถœ , WKWebView , SFSafariViewController (In app Browser)

  • -

WebVeiw

iOS ์•ฑ์—์„œ HTML ๋ฌธ์„œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•

  1. ์‚ฌํŒŒ๋ฆฌ ์•ฑ์„ ํ˜ธ์ถœํ•˜์—ฌ ๋„์›Œ์ฃผ๊ธฐ.
  2. WKWebView (iOS8 ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ์ง€์›๋จ.)
  3. SFSafariViewController

1๋ฒˆ์€ ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ์‚ฌํŒŒ๋ฆฌ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š”๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์•ฑ์—์„œ ํฌ์ปค์‹ฑ์ด ๋ฒ—์–ด๋‚˜๊ฒŒ๋œ๋‹ค. ๋‚˜๋จธ์ง€ 2,3๋ฒˆ์˜ ๋ฐฉ์‹์€ ์•ฑ ๋‚ด๋ถ€์—์„œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ธŒ๋ผ์šฐ์ง•ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์•ฑ ๋‚ด๋ถ€์— ๊ตฌํ˜„๋œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ธ์•ฑ ๋ธŒ๋ผ์šฐ์ €(In-App Browser)๋ผ๊ณ  ํ•œ๋‹ค.

์›๋ž˜๋Š” UIWebView ๋ผ๋Š” ๊ฒƒ๋„ ์žˆ์—ˆ์œผ๋‚˜, ์ด์ œ ๋”์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. (2020๋…„ 5์›”๋ถ€ํ„ฐ)

 

 

์›น๋ทฐ์˜ ์‚ฌ์šฉ ๋ฐฉ์‹

๋‹ค๋ฅธ View๋“ค๊ณผ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค. ViewController์— ์ถ”๊ฐ€ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ง•ํ•  URL ํ˜น์€ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ธ์ž๊ฐ’์œผ๋กœ ๋„ฃ์–ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

 

#1 ์‚ฌํŒŒ๋ฆฌ ์•ฑ ํ˜ธ์ถœ (Safari)

let url = URL(String:"https://www.naver.com/")
UIApplication.shared.open(url!, option: [:])

URLSession URLRequest ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” ATS์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

์‚ฌํŒŒ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์€ Info.plist ํŒŒ์ผ์— ATS(App Transport Security)์— ๋Œ€ํ•œ ์„ค์ •๋„ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์— ๋Œ€ํ•ด์„œ๋„ ์‚ฌํŒŒ๋ฆฌ ์•ฑ์ด ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

#2 WKWebView 

WKWebView๋Š” WebKit์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ์ •์˜๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค. ๋”ฐ๋ผ์„œ import๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ณดํ†ต ์นด์นด์˜ค๋“ฑ์˜ ์•ฑ์—์„œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•๋œ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ WKWebVeiw๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋œ๋‹ค. ์„ธ๋ถ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ๋˜์ง€๋งŒ, ๊ทธ๋งŒํผ ์ž์œ ๋„๊ฐ€ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

import WebKit
@IBOutlet var webView : WKWebView!

let url = URL(string: "https://www.naver.com/")
let request = URLRequest(url: url!)

self.webView.load(request)

 

 

#3 SFSafariViewController

SFSafariViewController ๋Š” ๋ทฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ์ฒด์— ํ•ด๋‹น๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— UI์— ์‚ฝ์ž…ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ(์Šคํ† ๋ฆฌ ๋ณด๋“œ์ƒ์—์„œ ์ž‘์—…ํ• ๊ฒŒ ์—†๋‹ค๋Š” ์˜๋ฏธ) ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

import SafariServices

let url = URL(string: "https://www.google.com/")
let safariViewController = SFSafariViewController(url: url!)
present(safariViewController, animated: true, completion:nil)
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.