반응형
iOS에서 webView를 보여주는 방식 3가지
- 외부 브라우저(사파리)로 열기
- SFSafariViewController
- WKWebView
1. 외부 브라우저(사파리)로 열기
앱 내부 작동과 무관하게 외부 브라우저에서 여는 방법이다.
@objc func openSafari(_ sender: Any) {
if let url = URL(string: "https://hongssup.tistory.com") {
UIApplication.shared.open(url, options: [:])
}
}
UIApplication.shared.canOpenURL(url)
: if 문에서 이 조건을 추가로 넣으면, 링크가 유효하지 않을 경우 사파리 앱으로 아예 안넘어갈 줄 알았는데 그건 아니더라. 딱히 있고 없고 차이가 없어서 그냥 뺴버렸음.
2. SFSafariViewController
앱 내부에서 사파리 브라우저를 띄우는 방법.
뒤로가기 / 앞으로가기 버튼 등 기본적인 동작들은 디폴트로 구현이 되어있어 따로 설정해줄 필요가 없다.
다만 브라우저 주소 텍스트 필드는 수동으로 편집할 수 없다.
import SafariServices
@objc func openSFSafariViewController(_sender: Any) {
guard let url = URL(string: "https://hongssup.tistory.com") else { return }
let safariViewController = SFSafariViewController(url: url)
present(safariViewController, animated: true, completion: nil)
}
3. WKWebView
iOS에서 기본적으로 웹뷰라고 하면 가장 많이 사용하는 것이 이 WKWebView이지 않을까.
위 두가지 방법은 다른 추가 작업 없이 그냥 열어! 하면 열리는 방식이라면
이 WKWebView 방식은 앱 내부에서 웹뷰를 직접 설정해줘야 열리는 방식이라 좀 더 까다롭다.
그렇지만 그만큼 화면이나 동작에 custom 으로 설정 및 트래킹 가능한 부분들이 많기도 하다.
import WebKit
guard let url = URL(string: "https://hongssup.tistory.com") else { return }
let request = URLRequest(url: url)
webView.load(request)
WKWebView는 info.plist 에서 App Transport Security Settings - Allow Arbitrary Loads - YES 로 설정을 추가해주어야 한다.
728x90
반응형
'Swift iOS 앱 개발 > iOS' 카테고리의 다른 글
UICollectionViewDelegate (0) | 2022.09.15 |
---|---|
UIScrollViewDelegate (0) | 2022.09.15 |
[Swift iOS] Custom Camera 커스텀 카메라 만들기 (0) | 2022.02.04 |
[Objective-C iOS] OpenCV detect rectangle 윤곽선 가져오기 (0) | 2022.01.12 |
[iOS] 아이폰 웹뷰 디버깅 (0) | 2022.01.06 |