구글 번역기와 챗지피티로 공부한 내용입니다. 틀린 내용있으면 댓글 달아주세요.
- overview
- 웹 콘텐츠를 UI(화면)에 통합하는데 사용한다.
- HTML,CSS,JavaScript 콘텐츠를 제공한다.
- HTML : 웹 페이지의 구조를 정의
- CSS : HTML로 만들어진 콘텐츠에 레이아웃과 디자인 요소를 정의하는 기술
- JavaScript : 웹 페이지를 동적으로 만들어(실시간으로 내용 업데이트) 사용자와 상호 작용할 수 있도록 한다.
- WKWebViewConfiguration
- 광범위한 사용자 정의를 위해 사용
- 웹 콘텐츠에서 사용할 수 있는 초기 쿠키
- 웹 콘텐츠가 사용하는 custom url Schemes에 대한 handler
- URL Schemes : 인터넷에서 자원의 위치를 식별하거나 엑세스 방법을 지정하는데 사용되는 문자열 패턴
- URL 스킴에 대한 핸들러를 설정하면 WKWebView내에서 해당 스킴의 URL이 로드 될때마다 지정된 핸들러가 호출된다.
- WKWebView의 delegate메서드나 WKURLSchemeHandler 프로토콜을 구현하는 객체를 통해 정의될 수 있으며, 웹 콘텐츠에서 사용자 정의 스킴을 통해 요청된 작업을 앱 내에서 처리하도록 할 수 있습니다.
- 미디어 컨텐츠를 다루는 방법 세팅
- 웹뷰에서 selections(텍스트나 링크를 클릭 하는 것)를 관리하는 방법에 대한 정보
- var selectionGranularity : 사용자가 웹 뷰 컨텐츠를 대화형으로 선택할 수 있는 세부수준이다.
- configuration을 나중에 동적으로 바꿀 수 없다.
- 컨텐츠 렌더링하는 방법을 정하는 사용자 정의 규칙
- processPool
- 웹 콘텐츠를 렌더링하고 스크립트를 실행하기 위해 웹 뷰가 사용하는 프로세스를 조정하는 개체
- 프로세스 : 실행 중인 프로그램
- 렌더링 : UI요소를 화면에 그리는 것
- 웹뷰에 처음 만들어지면 새로운 풀을 만들던지 존재하는 풀을 사용한다.
- WKProcessPool
- WKProcessPool 객체는 WKWebView 인스턴스 간에 웹 콘텐츠 프로세스를 공유할 수 있게 해주는 컨테이너 역할을 한다.
- 주요 기능
- 프로세스 공유
- 여러 WKWebView 인스턴스가 동일한 WKProcessPool을 사용하면, 웹페이지 로딩 및 렌더링을 처리하는 백그라운드 프로세스를 공유할 수 있다.
- 로딩은 백그라운드 프로세스에서 실행되고 사용자 인터페이스(UI)에 표시될 때는 메인 스레드(메인 프로세스)에서 처리된다.
- 이는 리소스 사용을 최적화하고 성능을 향상시킬 수 있다.
- 여러 WKWebView 인스턴스가 동일한 WKProcessPool을 사용하면, 웹페이지 로딩 및 렌더링을 처리하는 백그라운드 프로세스를 공유할 수 있다.
- 쿠키 및 캐시 공유
- 같은 프로세스 풀을 사용하는 WKWebView 인스턴스들은 쿠키, 캐시 및 로컬 스토리지등을 공유할 수 있습니다.
- 사용자 인증 정보나 세션 상태 같은 것들을 여러 웹뷰에서 공유해야할때 유용하다.
- 프로세스 공유
- processPool
- 광범위한 사용자 정의를 위해 사용
- URLRequest
- URLRequest를 사용하여 웹뷰를 로드한다.
- UIActivityViewController
쿠키
- 웹에서 사용하는 "쿠키(Cookies)"는 작은 데이터 조각들로, 웹 서버에 의해 사용자의 웹 브라우저에 저장되고, 이후 같은 서버에 다시 요청을 보낼 때마다 웹 브라우저에 의해 서버로 다시 전송됩니다.
- 웹 서버 : 웹 사이트
- 웹 브라우저 : 웹 사이트에 접근할 수 있게 해주는 소프트웨어 응용 프로그램(크롬)
- 쿠키는 주로 사용자의 세션 관리(로그인 상태, 프로필 설정 등), 개인화(사용자 선호도 및 테마 설정) 및 사용자 행동 추적(방문한 페이지, 클릭한 링크 등)에 사용됩니다.
- 세션
- 웹 상에서의 통신은 상태가 없는 특성을 가지고 있어 이전 상호 작용을 기억하지 않는다.
- 사용자가 웹사이트에 로그인할 때, 서버는 세션 ID를 생성하여 사용자의 브라우저에 쿠키 형태로 저장된다.
- 이후 모든 요청(예:다른 페이지로 이동)에 이 세션 ID를 포함 시킵니다. 서버는 이 ID를 통해 사용자의 세션 데이터에 접근하여 사용자별 상태 정보를 유지할 수 있습니다.
- 세션 ID를 사용하여 서버측에 저장된 해당 세션 ID와 연결된 세션 데이터에 접근한다.
- 세션 데이터는 메모리, 데이터베이스, 파일 시스템 등 서버측에 저장될 수 있다.
- 세션
WKNavigationDelegate
optional func webView(
_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
preferences: WKWebpagePreferences,
decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void
)
- 탐색 요청을 허용하거나 거부하려면 이 메소드를 사용한다.
- 웹뷰는 상호작용이 발생한 후 컨텐츠 로드를 시도하기 전에 이 메소드를 호출한다.
- delegate가 이 메서드를 구현하는 경우 웹뷰는 webView(_:decidePolicyFor:decisionHandler:) 메서드를 호출하지 않는다.
- preferences와 action information(웹 페이지의 탐색 요청과 관련된 정보)를 기반으로 새 콘텐츠를 탐색할 수 있는 권한을 delegate에게 요청합니다.
- webview : 탐색 요청이 시작된 웹뷰
- navigationAction : 탐색 요청을 트리거한 action에 대한 세부정보
- var navigationType
- 탐색을 트리거한 액션의 타입
- 리로드, 뒤로 가기, 링크 를 구별하고 싶을 때 사용
- 탐색을 트리거한 액션의 타입
- var request
- URL request
- var navigationType
- preferences :
- 새 웹페이지를 표시할 때 사용할 기본 환경 설정
- 웹뷰를 생성할 때 WKWebViewConfiguration의 defaultWebpagePreferences 속성을 사용하여 페이지의 기본 환경 설정을 지정한다.
- decisionHandler
- 탐색 허용 또는 취소 여부에 대한 결과를 호출하기 위한 완료 핸들러 블록
- 이 핸들러는 반환 값이 없으며 다음 매개 변수를 사용한다.
- policy
- 탐색을 취소할지 허용할지를 나타내는 상수
- preferences
- 탐색이 허용되는 경우 페이지에 적용할 기본 설정 집합
- preferences 매개변수에서 개체를 전달하거나 새 preferences를 구성하고 대신 전달할 수 있다.
- policy
optional func webView(
_ webView: WKWebView,
decidePolicyFor navigationResponse: WKNavigationResponse,
decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void
)
- Delegate는 웹 서버의 응답을 바탕으로 새로운 웹 페이지나 리소스를 웹뷰에서 로드할지 여부를 결정한다.
- 사용자가 웹뷰 내의 링크를 클릭하거나, 페이지 내부 폼을 제출하거나, 페이지 내의 자바스크립트가 새 페이지를 로드하도록 요청하는 경우등이 이에 해당한다.
- 웹 페이지를 로드한 후 응답에 대한 처리를 결정할 때 호출된다.
- 웹 페이지를 로드하면 웹 서버에서 해당 웹페이지에 대한 HTTP응답이 발생합니다. 이 응답은 웹페이지의 내용과 웹페이지에 필요한 리소스(HTML,CSS,javascript,이미지, 스타일 시트 등)을 포함합니다.
- 이러한 HTTP응답을 웹브라우저 또는 WKWebView와 같은 웹뷰가 받아서 해당 웹페이지를 렌더링하고 화면에 표시합니다.
- 이 메서드는 주로 웹페이지 로드 이후의 동작을 제어하거나 특정 응답에 대한 정책을 결정하는데 사용됩니다.
- 특정 도메인에서만 허용되는 리소스에 대한 요청을 처리하거나 리다이렉트를 처리하고자 할때 이 메소드를 사용할 수 있습니다.
- NavigationResponse 매개변수에는 response에 포함된 데이터 유형을 포함하여 응답의 세부정보가 포함되어 있습니다.
- navigationResponse
- 탐색 응답에 대한 설명 정보입니다.
- decisionHandler
- 탐색 허용 또는 취소 여부에 대한 결과를 호출하기 위한 완료 핸들러 블록입니다.
- 이 핸들러에는 반환 값이 없으며 policy라는 매개 변수를 사용합니다.
optional func webView(
_ webView: WKWebView,
didStartProvisionalNavigation navigation: WKNavigation!
)
- 새로운 페이지로의 탐색이 시작(페이지 이동)되었음을 delegate에게 알립니다.
- 예: 링크 클릭, 페이지 로드(load(()),자동 리다이랙션
- WKWebView는 사용자가 웹 페이지로 이동하려는 요청을 시작한후, 그리고 서버로 부터 최종적인 페이지 로드 응답을 받기 전에 이 메서드를 호출한다.
- 즉, decidePolicyFor navigationAction -> didStartProvisionalNavigation -> decidePolicyFor navigationResponse
- 네비게이션 요청이 서버로 부터 완전한 응답을 받기 전에도 이미 웹뷰에서 처리 작업을 시작할 수 있음을 의미한다.
- 사용자가 네비게이션 동작을 시작한다. 예를 들어 링크를 클릭하거나 웹뷰에 새 URL을 입력한다.
- 웹뷰는 요청된 페이지로 이동하는 작업을 시작하지만, 해당 페이지의 실제 내용(응답)은 아직 수신하지 않은 상태이다.
- 이 시점에서는 웹뷰는 임시 네비게이션 상태에 있다.
- 페이지 내용이 도착하기 전에 네비게이션 프로세스와 관련된 작업 또는 업데이트를 수행할 수 있는 좋은 위치이다.
- navigation
- 로드 요청과 관련된 navigation 객체
optional func webView(
_ webView: WKWebView,
didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!
)
- 리디렉션을 받았음을 delegate에게 알린다.
- navigation
- 서버의 리디렉션을 받은 navigation 객체
- WKNavigation
- 웹 페이지의 로딩 진행 상황을 추적하는 객체
- 이 객체는 웹페이지에 대한 로드 요청을 고유하게 식별한다. navigation 매개 변수
- 웹 뷰에 콘텐츠를 로드하거나 이동하도록 요청하면 웹 뷰는 요청을 식별하는 WKNavigation 객체를 반환한다.
- 로드 작업이 진행됨에 따라 웹 뷰는 해당작업의 진행상황을 navigation delegate에 보고하고 해당 메서드에 일치하는 WKNavigation 객체를 전달한다.
optional func webView(
_ webView: WKWebView,
didCommit navigation: WKNavigation!
)
- 이 메서드는 웹 페이지의 콘텐츠가 웹뷰에 로드되기 시작했을 때 호출된다.
- 구체적으로, 웹 서버로 부터 응답을 받고, 해당 웹페이지의 실제 콘텐츠가 로드되기 시작하는 시점에 이 메소드가 실행된다.
- 메소드의 역할
- 커밋 단계
- commit은 웹뷰가 서버로부터 받은 응답을 기반으로 페이지 로드를 확정지은 상태를 의미합니다.
- 이는 웹 페이지가 실제로 로드되고 있음을 나타낸다.
- 로딩 시작
- 이 메소드가 호출되면 웹페이지의 콘텐츠(HTML, CSS, 자바스크립트 등)가 웹뷰에 로드되기 시작했음을 의미한다.
- 커밋 단계
- 이 메소드는 주로 웹 페이지의 로딩 진행 상황을 사용자에게 표시하거나, 로딩 과정에서 필요한 추가 작업을 수행하는 데 사용된다.
optional func webView(
_ webView: WKWebView,
didFinish navigation: WKNavigation!
)
- navigation이 끝났음을 delegate에게 알린다.
- navigation
- 완료된 navigation 객체 입니다.
optional func webView(
_ webView: WKWebView,
didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
)
- delegate에게 인증 challenge에 응답하도록 요청한다.
- challenge
- authentication challenge
- URLAuthenticationChallenge
- 서버로부터 발생하는 클라이언트(웹뷰, 앱)에게 인증을 요구하는 도전을 나타내는 객체
- 웹 브라우징 중에 안전한 통신을 유지하기 위해 사용됨
- 예를 들어, 클라이언트는 인증도전에 대응하여 서버에서 제공한 자격 증명을 사용하여 안전한 HTTPS 연결을 설정하거나, 도전을 거부할 수 있습니다.
- 이 객체는 다음과 같은 정보를 포함할 수 있다.
- Protection Space
- 도전이 발생한 보호 공간(Protection Space)에 관한 정보를 포함합니다.
- 이 정보에는 서버의 호스트 이름, 포트 및 프로토콜에 대한 정보가 포함됩니다.
- Proposed Credential
- 클라이언트가 도전에 응답하기 위해 제안하는 자격 증명(credential)을 포함할 수 있습니다.
- 주로 서버와의 안전한 통신을 위한 사용자 이름과 비밀번호 또는 인증 토큰과 같은 정보를 나타냅니다.
- Previous Failure Count
- 이전에 실패한 인증 시도 횟수
- 이 값은 이전에 도전에 대한 인증이 실패한 경우에 사용될 수 있습니다.
- Protection Space
- completionHandler
- 응답과 함께 실행할 완료 핸들러 블록
- 반환값이 없으며 다음 매개변수를 사용함
- dispostion(처분)
- 문제를 처리하는데 사용하는 옵션
- credentail(신임장)
- disposition 매개변수에 URLSession.AuthChallengeDisposition.useCredential이 포함된 경우 인증에 사용할 자격 증명
- URLSession.AuthChallengeDisposition
- 세션 또는 task delegate가 authentication challenge에 대한 응답으로 제공된 블록에 전달한 상수
- 세션 : 사용자 정보를 저장하는 방법
- URLSession.AuthChallengeDisposition
- 자격 증명 없이 계속하려면 nil을 지정
- disposition 매개변수에 URLSession.AuthChallengeDisposition.useCredential이 포함된 경우 인증에 사용할 자격 증명
- 이 메서드를 구현하지 않으면 웹뷰는 URLSession.AuthChallengeDisposition.rejectProtectionSpace 처리를 사용하여 인증 요청에 응답합니다.
- URLSession.AuthChallengeDisposition.rejectProtectionSpace
- challenge를 거부하고 다음 authentication 보호 공간으로 authentication delegate 메서드를 다시 호출한다.
- 지공된 credectial 매개 변수는 무시된다.
- URLSession.AuthChallengeDisposition.rejectProtectionSpace
optional func webView(
_ webView: WKWebView,
didFail navigation: WKNavigation!,
withError error: Error
)
- 탐색하는 동안 에러가 발생했다는 것은 delegate에게 알린다.
optional func webView(
_ webView: WKWebView,
didFailProvisionalNavigation navigation: WKNavigation!,
withError error: Error
)
- didStartProvisionalNavigation() 탐색 중에 오류가 발생했음을 delegate에게 알립니다.
optional func webViewWebContentProcessDidTerminate(_ webView: WKWebView)
- 웹뷰 콘텐츠 프로세스가 종료되었음을 delegate에게 알린다.
- 웹뷰는 별도의 프로세스를 사용하여 웹 콘텐츠를 렌더링하고 관리합니다.
- WebKit는 어떤 이유로든 지정된 웹뷰에 대한 프로세스가 종료될 때 이 메소드를 호출합니다.
optional func webView(
_ webView: WKWebView,
navigationResponse: WKNavigationResponse,
didBecome download: WKDownload
)
- 탐색 응답이 다운로드가 되었을때 delegate에게 알린다.
- download
- 웹 리소스의 다운로드를 나타내는 객체이다.
- func cancel
UIDelegate
- 웹페이지를 대신하여 네이티브 UI요소를 보여주는 메소드
- 새 창 열기
- 사용자가 링크를 클릭하거나 웹 콘텐츠와 상호 작용할 때 새 창 또는 탭이 어떻게 열리는지 제어하는 것이 주요 사용 사례
- 기본 메뉴 항목 수정
- 사용자가 웹 콘텐츠와 상호작용할 때 (예: 마우스 우클릭), 웹 뷰에서는 일반적으로 기본 컨텍스트 메뉴 항목을 제공합니다.
- UIDelegate는 이러한 메뉴 항목을 사용자 지정하거나 확장하여 추가 기능을 제공하거나 앱의 요구 사항에 맞게 조정할 수 있습니다.
- 자바 스크립트 및 플러그인 콘텐츠 처리
- UIDelegate가 제공하는 메서드는 자바스크립트 함수 처리나 플러그인 콘텐츠와 상호 작용으로 인해 호출 될 수 있습니다.
- 사용자 지정 사용자 인터페이스
- 관습적이지 않은 UI를 같는 앱에 적용가능
optional func webView(
_ webView: WKWebView,
createWebViewWith configuration: WKWebViewConfiguration,
for navigationAction: WKNavigationAction,
windowFeatures: WKWindowFeatures
) -> WKWebView?
- 새로운 웹뷰를 만든다.
- 매개 변수
- webView
- delegate 함수를 호출하는 웹 뷰
- configuration
- 새 웹뷰를 생성할 때 사용할 구성
- navigationAction
- 새 웹뷰를 생성하는 원인인 navigation action
- windowFeatures
- 웹페이지에서 요청한 윈도우 특성
- 웹페이지가 새 윈도우를 열려고 할 때 요청한 윈도우의 속성 및 기능에 대한 정보
- 예를 들어, 팝업 창의 크기, 위치, 스크롤 막대 여부등을 설정할 수 있다.
- webView
- 반환 값
- 새로운 웹 뷰
- nil
optional func webViewDidClose(_ webView: WKWebView)
- DOM(문서 객체 모델)창이 성공적으로 닫혔을 때 앱에 알리는 역할을 한다.
- 웹 뷰에서 웹 페이지를 통해 팝업 창 또는 새 창을 열 경우, 그 창이 사용자에 의해 닫히면 이 메서드가 호출됩니다.
optional func webView(
_ webView: WKWebView,
runJavaScriptAlertPanelWithMessage message: String,
initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping () -> Void
)
- 자바스크립트의 alert를 보여준다.
- 사용자 보안을 위해 이 메서드를 구현하면 특정 웹사이트가 이 패널의 콘텐츠를 제어한다는 사실에 주의를 기울여야한다.
- alert의 확인 버튼은 하나
- 매개 변수
- message
- 전시될 메세지
- frame
- 자바 스크립트 프로세스를 시작한 프레임에 관한 정보
- 이 프레임은 웹 페이지 내에서 어떤 프레임에서 자바스크립트 코드가 실행되었는지를 나타냄
- completionHandler
- 알림 패널이 닫힌 후에 호출해야하는 완료 핸들러
- 이 핸들러는 알림 패널이 사용자에 의해 닫힌 후에 호출되며, 닫기 작업이 완료되었읍을 알린다.
- message
optional func webView(
_ webView: WKWebView,
runJavaScriptConfirmPanelWithMessage message: String,
initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping (Bool) -> Void
)
- confirm panel
- 버튼은 2개
- 확인
- 취소
optional func webView(
_ webView: WKWebView,
runJavaScriptTextInputPanelWithPrompt prompt: String,
defaultText: String?,
initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping (String?) -> Void
)
- 자바스크립트의 text input을 전시한다.
- 매개 변수
- prompt
- 보여질 메세지
- prompt 함수로 전달된 메세지
- prompt("Please enter your name:", "John Doe")
- 사용자에게 텍스트 입력을 요청하는 패널을 표시할 때 메시지 내용이 여기에 전달 됨
- defaultText
- 패널에 표시되는 기본 텍스트
- 사용자가 입력하는 데 사용될 초기 텍스트 값을 제공할 수 있습니다.
- prompt
optional func webView(
_ webView: WKWebView,
showLockdownModeFirstUseMessage message: String,
completionHandler: @escaping (WKDialogResult) -> Void
)
- Lockdown Mode의 첫 사용 메시지를 표시하는 메서드
- Lockdown Mode
- 보안을 위해 사용
- 사용자가 제한된 기능만 사용할 수 있도록 하는 모드
- Lockdown Mode
- 매개 변수
- completionHandler
- 비동기 작업이 완료되었을 때 호출해야하는 블록이다.
- 웹뷰가 첫 사용 다이얼로그를 표시하고 사용자 상호작용이 완료되었을 때 이 블록을 호출하여 앱의 실행을 재개할 수 있습니다.
- 이 블록은 결과를 반환하지 않으며, 대신 다음과 같은 매개 변수를 받습니다.
- dialogResult
- display result case 라고 불리는 enum 케이스이다.
- 이 케이스를 이 메서드가 첫 사용 다이얼로그 작업을 어떻게 처리했는지를 나타낸다
- success, failure
- completionHandler
optional func webView(
_ webView: WKWebView,
runOpenPanelWith parameters: WKOpenPanelParameters,
initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping ([URL]?) -> Void
)
- 파일 업로드 패널을 보여준다.
- 매개 변수
- parameters
- 파일 열기 다이얼로그의 매개변수를 나타낸다.
- UI에 대한 정보 및 파일 필터와 같은 다양한 설정이 여기에 포함될 수 있다.
- frame
- 파일 열기 동작을 시작한 프레임에 대한 정보를 포함한다.
- 웹 페이지 내에서 어떤 프레임에서 파일 열기 동작이 시작되었는지를 나타낸다.
- completion Handler
- 사용자가 파일을 선택한 후 호출해야하는 완료 핸들러
- 이 핸들러를 호출하여 사용자가 선택한 파일의 URL을 전달하고 처리할 수 있습니다.
- 파일을 선택하지 앟거나 취소한 경우 nil을 전달할 수도있다.
- parameters
optional func webView(
_ webView: WKWebView,
contextMenuConfigurationForElement elementInfo: WKContextMenuElementInfo,
completionHandler: @escaping (UIContextMenuConfiguration?) -> Void
)
- 웹페이지에서 콘텍스트 메뉴 상호작용이 시작될 때 호출된다.
- 이 메서드를 사용하여 컨텍스트 메뉴가 표시 되어야하는지 여부를 결정하고, 사용자가 요소를(element) 클릭했을때 표시될 컨텍스트 메뉴의 구성(configuration)을 설정할 수 있습니다.
- 매개 변수
- elementInfo
- 컨택스트 메뉴가 표시될 요소에 대한 정보를 포함한다.
- 이 정보를 기반으로 컨택스트 메뉴가 어떻게 구성되어야하는 지를 결정할 수 있습니다.
- completionHandler
- configuration을 설정한 후 호출해야하는 완료 핸들러
- 이 핸들러를 호출하여 컨텍스트 메뉴를 반환하거나, 메뉴를 표시하지 않을 경우 nil을 반환할 수 있습니다.
- elementInfo
optional func webView(
_ webView: WKWebView,
contextMenuForElement elementInfo: WKContextMenuElementInfo,
willCommitWithAnimator animator: UIContextMenuInteractionCommitAnimating
)
- 웹뷰가 컨텍스트 메뉴를 표시하는 데(웹뷰 내의 요소를 길게 누를때 나타남) 사용하는 애니메이터 객체를 델리게이트에게 제공하는 역할을 합니다.
- 이 메소드를 구현함 으로서 메뉴의 동작 및 모양을 사용자 정의할 수 있다.
- 매개 변수
- elementInfo
- 사용자가 길게 누른 요소에 대한 정보를 나타냄
- 요소의 유형(링크, 이미지), 해당 URL및 관련 정보등이 포함될 수 있습니다.
- animator
- 웹뷰가 컨텍스트 메뉴를 표시하는데 사용하는 애니메이터 객체를 제공합니다.
- 애니메이터 객체는 컨텍스트 메뉴와 관련된 애니메이션 또는 전환에 사용될수 있습니다.
- elementInfo
optional func webView(
_ webView: WKWebView,
contextMenuWillPresentForElement elementInfo: WKContextMenuElementInfo
)
- 컨텍스트 메뉴를 표시하기 직전에 호출된다.
- 웹뷰가 지정된 요소에 대한 컨텍스트 메뉴를 표시하기 전에 델리게이트에게 알려줍니다.
- 컨텍스트 메뉴의 내용을 동적으로 조절하거나 요소에 대한 추가 정보를 제공하는 등의 작업을 수행핳 수 있습니다.
- 매개 변수
- elementInfo
- 컨텍스트 메뉴가 표시되는 대상 요소에 대한 정보를 포함합니다.
- 요소의 유형, 위치 또는 다른 관련 정보가 포함될 수 있습니다.
- elementInfo
- 매개 변수
optional func webView(
_ webView: WKWebView,
contextMenuDidEndForElement elementInfo: WKContextMenuElementInfo
)
- 컨텍스트 메뉴를 해제한 후에 호출된다.
- 컨텍스트 메뉴가 닫힌 후 추가 작업을 수행할 수 있습니다.
- 매개 변수
- elementInfo
- 컨텍스트 메뉴가 해제된 요소에 대한 정보를 포함합니다.
- 요소의 유형, 위치 또는 다른 관련 정보가 여기에 포함될 수 있습니다.
- elementInfo
optional func webView(
_ webView: WKWebView,
willDismissEditMenuWithAnimator animator: UIEditMenuInteractionAnimating
)
- 웹뷰가 edit menu를 해제하기 직전에 호출된다.
- 매개 변수
- animator
- 편집 메뉴가 해제될 때 사용되는 애니메이터 객체를 제공한다.
- 애니메이터 객체는 매뉴 해제와 관련된 애니메이션 또는 전환에 사용될 수 있습니다.
- animator
optional func webView(
_ webView: WKWebView,
willPresentEditMenuWithAnimator animator: UIEditMenuInteractionAnimating
)
- 웹뷰가 edit menu를 표시하기 직전에 호출된다.
- 이 메서드는 웹뷰가 현재 표시할 편집 메뉴를 델리게이트에게 알려준다.
optional func webView(
_ webView: WKWebView,
requestDeviceOrientationAndMotionPermissionFor origin: WKSecurityOrigin,
initiatedByFrame frame: WKFrameInfo,
decisionHandler: @escaping (WKPermissionDecision) -> Void
)
- security origin object가 설명하는 웹 리소스가 기기의 방향 및 동작 데이터에 엑세스 할 수 있는지 여부를 결정하기 위해 호출 됩니다.
- 이 메서드를 구현하면 iOS 앱의 웹뷰 내에서 웹 리소스가 기기의 방향 및 동작 데이터에 액세스 하는 것을 허용하거나 거부할 수 있습니다.
- 보안 및 사용자 개인 정보 보호를 위한 중요한 역할을 하며 앱의 요구 사항과 사용자의 환경에 따라 웹 리소스 마다 액세스 권한을 허용하거나 거부할 수 있게 해줍니다.
- 매개 변수
- origin
- 기기의 방향 및 동작 정보에 액세스를 요청하는 웹 리소스를 설명하는 security origin object를 나타낸다.
- frame
- 요청을 시작한 프레임에 관한 정보를 제공한다.
- 권한 요청을 트리거한 소스 프레임에 대한 세부 정보를 포함할 수 있다.
- decisionHandler
- 웹 리소스가 기기 방향 및 동작 정보에 엑세스 권한을 부여할지 또는 거부할지 결정하기 위해 개발자로서 제공해야하는 완료 핸들러
- origin
- 반환 값
- 권한을 결정하는 enum을 반환
- WKPermissionDecision.prompt
- 구현 안하면 WKPermissionDecision.prompt가 기본값임
optional func webView(
_ webView: WKWebView,
requestMediaCapturePermissionFor origin: WKSecurityOrigin,
initiatedByFrame frame: WKFrameInfo,
type: WKMediaCaptureType,
decisionHandler: @escaping (WKPermissionDecision) -> Void
)
- 웹 리소스가 기기의 마이크 오디오와 카메라 비디오에 엑세스 할 수 있는지 여부를 결정하기 위해 호출됩니다.
- 마이크 오디오와 카메라 비디오에 엑세스하는 것을 허용하거나 거부할 수 있습니다.
- 사용자의 동의를 받고 필요한 권한을 부여하는데 사용됩니다.
- 매개 변수
- origin
- 마이크 오디오와 카메라 비디오 엑세스를 요청하는 웹 리소스를 설명하는 security origin object를 나타냄
- 이 security origin object는 요청의 원본을 식별하는데 사용함
- frame
- 요펑을 시작한 프레임에 관한 정보를 제공
- 권한 요청을 트리거한 소스 프레임에 관한 세부 정보를 포함할 수있다.
- type
- 요청도니 미디어 캡쳐 유형을 나타냄
- audio
- video
- decisionHandler
- 웹 리소스가 마이크 오디오와 카메라 비디오 에 엑세스 권한을 부여할지 또는 거부할지 결정하기 위해 개발자로서 제공해야 하는 완료핸들러이다.
- 이 핸들러를 사용하여 권한을 허용하거나 거부하는 결정을 내릴 수 있다.
- origin
'ios' 카테고리의 다른 글
6. ios videoLab에 대한 문서 공부 (0) | 2023.11.14 |
---|---|
5. Swift Concurrency (0) | 2023.10.09 |
4. iOS13 AppDelegate, SceneDelegate의 역할 (0) | 2023.09.14 |
3. WKWebView 공식문서 공부 2편 (0) | 2023.09.12 |
1. UIViewController 공식문서 공부 (0) | 2023.08.29 |