Open yoogail105 opened 2 years ago
장점
사파리 앱을 그대로 호출, ATS 설정 필요 X(App Transport Security, 네트워크 통신을 사파리 앱이 대신 처리, info.plist에 HTTP보안 허가 X)
→ 구현 쉬움
단점
기존 뷰에서 여는 것이 아니라 새로운 사파리 앱을 호출→ 포커스 벗어남 → 추천 X
let url = URL(string: "https://www.apple.com/")
UIApplication.shared.open(url!, options:[:])
import UIKit
deprecate
import WebKit
HTTP
url 사용하면 inpo.plist에 ATS설정 필요import Webkit
@IBOutlet var webView: WKWebView!
guard let url = URL(string: "https://www.apple.com/") else { return }
let req = URLRequest(url: url!)
self.webView.load(req)
load(_:)
loadHTMLString
사용stopLoading()
: 웹페이지 로딩 도중에 중단하고자할 때 사용isLoading프로퍼티
: 웹 페이지 로딩 진행 여부 확인(return Bool), 읽기전용값(수정X)goBack()
, goForward()
: 뒤로가기, 앞으로 가기
goBack()
작동XWKNavigationDelegate
, WKUIDeletage
프로토콜에 정의WKNavigationDelegate
: 웹페이지 로딩 상황 추적 or 제어
webView(_:decidePolicyFor:decisionHandler:)
: 웹뷰가 특정 페이지 읽어올지 말지 결정webView(_:didStartProvisionalNavigation)
: 웹 뷰가 콘텐츠 로드하기 시작할 때 호출
주의
url 유효하지 않을 때에나, 오프라인 상태에서도 호출됨didCommit
didFailProvisionalNavigation
webView(_:didCommit:)
: 웹뷰가 HTML 페이지 콘텐츠 읽어들이기 시작할 때 호출webView(_:didFinish:)
: 웹뷰가 콘텐츠 로딩 완전히 마쳤을 때 호출webView(_:didFail:withError:)
: 웹뷰가 콘텐츠 로딩에 실패했을 때 호출load
를 통해 특정 웹 페이지를 로딩할 때 호출, 다음 페이지로 넘어갈 때에도 호출import SafariServices
present(safariViewController, animated: true)
: 사파리 앱을 호출하는 것이 아니라, 기존의 앱 내의 뷰에서 화면을 전환하는 방식으로 실행import SafariServices
@IBAction func btnAction(_ sender: Any) {
let url = URL(string: "https://www.apple.com/")
let safariViewController = SFSafariViewController(url: url!)
present(safariViewController, animated: true)
}
11. 웹 뷰: 앱에서 웹 페이지를 여는 방법