-
Swift-WebKitView를 통해 앱에서 웹화면 출력하기모바일 앱 개발 2019. 10. 5. 18:53
앱개발 방법은 네이티브, 하이브리드 등 다양하지만
가장 쉽게 적은 공수로 개발할 수 있는 방법은 웹뷰를 통한 방법인 것 같다.
이전 포스팅에서 만든 웹페이지를 웹뷰를 통해 iOS기기에서 앱 형태로 확인하는 방법을 정리한다.
애플의 개발환경은 빠르게 변화하다보니 최근 웹뷰 개발 중 문제가 생겼던 분들은 참고하시면 좋을듯 합니다.
2019/10/05 - [Project] - 파이어베이스를 통한 간단한 일기장 웹앱
1. 개발 환경
- 맥북프로 MacOS Mojave
- Xcode ver 10.3
2. 웹뷰 사용을 위한 셋팅
1) 프로젝트 생성 후 프로젝트 설정 진입 > Build Phases > Link Binary With Libraries 탭 진입
프레임워크 미추가시 에러로그가 직관적이지 않아서 10분 정도 해맸던 부분, 프레임워크 추가 필수!
NSInvalidUnarchiveOperationException <= 프레임워크 미추가시 왼쪽과 같이 에러로그 출력됨
-
WebKit.framework 를 검색하여 추가
2) Info.plist 파일에 진입하여 http 통신 허용을 위한 권한 추가
(https 통신을 사용하는 사이트를 웹뷰에 사용할때는 안해도 되는 것 같지만 혹시몰라서 추가)
- App Transport Security Settings 추가 후 하위 항목에
- Allow Arbitrary Loads 추가 후 값을 YES로 변경
3. 웹뷰 추가 및 코드 작성
1) 스토리 보드에 WebKit View 추가
- 일반 web View는 애플에서 권장하지 않는 방식이라고 함
- WebKit View는 iOS11 이상 기기에서만 사용 가능하므로 상용 프로그램 빌드시에는 사용을 보류해야 할듯
2) 웹뷰와의 연결을 위해 새로운 클래스 파일 생성
4) 웹뷰가 들어갈 뷰컨트롤러 속성에 방금 만든 클래스 파일을 커스텀 클래스로 지정
5) 생성한 클래스 파일로 돌아와서 소스 코드 작성
import UIKit import WebKit //WebView 사용을 위한 패키지 임포트 class WebViewController: UIViewController { @IBOutlet weak var myWebView: WKWebView! override func viewDidLoad() { super.viewDidLoad() // viewDidLoad() 바로 다음에 함수를 호출하여 웹뷰가 즉시 출력될 수 있도록 작성 loadWebPage("타겟사이트URL") } //웹뷰 로드 기능을 하는 함수 생성 func loadWebPage(_ url:String) { let myUrl = URL(string: url) let myRequest = URLRequest(url: myUrl!) myWebView.load(myRequest) } // 이전 버튼 작동을 위한 구문 @IBAction func onBtnBack(_ sender: Any) { self.navigationController?.popViewController(animated: true) } }
6) 빌드 후 시뮬레이터에서 웹페이지 연결 확인
4. 정리
- WebKitView 사용을 위해 inpo.plist 파일에서 통신 설정을 추가해야함
- 프로젝트 설정에서 WebKit 프레임워크를 미리 추가해야함
- WebKitView는 사파리를 여는게 아니라 앱내에서 웹 화면을 띄워 줌
- iOS11 이하 기기에서는 지원하지 않는 기능이므로 타겟 OS 버전을 낮출 경우 빌드 자체가 불가능함
'모바일 앱 개발' 카테고리의 다른 글
[Swift] 고차함수 map, flatMap, compactMap (0) 2021.08.26 ADB 기본 명령어 및 명령어를 활용한 앱 설치 자동화 (0) 2021.08.24 윈도우에서 Android 개발 환경 셋팅하기 (0) 2021.08.11 Swift - iOS앱 구글애드몹 광고 연동 방법 (0) 2020.03.09