본문 바로가기

ios

2. WKWebView 공식문서 공부 1편

구글 번역기와 챗지피티로 공부한 내용입니다. 틀린 내용있으면 댓글 달아주세요.

  1.  overview
    1. 웹 콘텐츠를 UI(화면)에 통합하는데 사용한다.
    2. HTML,CSS,JavaScript 콘텐츠를 제공한다.
      1. HTML : 웹 페이지의 구조를 정의
      2. CSS : HTML로 만들어진 콘텐츠에 레이아웃과 디자인 요소를 정의하는 기술
      3. JavaScript : 웹 페이지를 동적으로 만들어(실시간으로 내용 업데이트) 사용자와 상호 작용할 수 있도록 한다.
    3. WKWebViewConfiguration
      1. 광범위한 사용자 정의를 위해 사용
        1. 웹 콘텐츠에서 사용할 수 있는 초기 쿠키
        2. 웹 콘텐츠가 사용하는 custom url Schemes에 대한 handler
          1. URL Schemes : 인터넷에서 자원의 위치를 식별하거나 엑세스 방법을 지정하는데 사용되는 문자열 패턴
          2. URL 스킴에 대한 핸들러를 설정하면 WKWebView내에서 해당 스킴의 URL이 로드 될때마다 지정된 핸들러가 호출된다.
          3. WKWebView의 delegate메서드나 WKURLSchemeHandler 프로토콜을 구현하는 객체를 통해 정의될 수 있으며, 웹 콘텐츠에서 사용자 정의 스킴을 통해 요청된 작업을 앱 내에서 처리하도록 할 수 있습니다.
        3. 미디어 컨텐츠를 다루는 방법 세팅
        4. 웹뷰에서 selections(텍스트나 링크를 클릭 하는 것)를 관리하는 방법에 대한 정보
          1. var selectionGranularity : 사용자가 웹 뷰 컨텐츠를 대화형으로 선택할 수 있는 세부수준이다.
        5. configuration을 나중에 동적으로 바꿀 수 없다.
        6. 컨텐츠 렌더링하는 방법을 정하는 사용자 정의 규칙
          1. processPool 
            1. 웹 콘텐츠를 렌더링하고 스크립트를 실행하기 위해 웹 뷰가 사용하는 프로세스를 조정하는 개체
            2. 프로세스 : 실행 중인 프로그램
            3. 렌더링 : UI요소를 화면에 그리는 것
            4. 웹뷰에 처음 만들어지면 새로운 풀을 만들던지 존재하는 풀을 사용한다.
            5. WKProcessPool
              1. WKProcessPool 객체는 WKWebView 인스턴스 간에 웹 콘텐츠 프로세스를 공유할 수 있게 해주는 컨테이너 역할을 한다.
              2. 주요 기능
                1. 프로세스 공유
                  1. 여러 WKWebView 인스턴스가 동일한 WKProcessPool을 사용하면, 웹페이지 로딩 및 렌더링을 처리하는 백그라운드 프로세스를 공유할 수 있다. 
                    1. 로딩은 백그라운드 프로세스에서 실행되고 사용자 인터페이스(UI)에 표시될 때는 메인 스레드(메인 프로세스)에서 처리된다.  
                  2. 이는 리소스 사용을 최적화하고  성능을 향상시킬 수 있다.
                2. 쿠키 및 캐시 공유
                  1. 같은 프로세스 풀을 사용하는 WKWebView 인스턴스들은 쿠키, 캐시 및 로컬 스토리지등을 공유할 수 있습니다.
                3. 사용자 인증 정보나 세션 상태 같은 것들을 여러 웹뷰에서 공유해야할때 유용하다.
    4. URLRequest
      1. URLRequest를 사용하여 웹뷰를 로드한다.
    5. UIActivityViewController

 

쿠키

  1. 웹에서 사용하는 "쿠키(Cookies)"는 작은 데이터 조각들로, 웹 서버에 의해 사용자의 웹 브라우저에 저장되고, 이후 같은 서버에 다시 요청을 보낼 때마다 웹 브라우저에 의해 서버로 다시 전송됩니다.
    1. 웹 서버 : 웹 사이트
    2. 웹 브라우저 : 웹 사이트에 접근할 수 있게 해주는 소프트웨어 응용 프로그램(크롬)
  2. 쿠키는 주로 사용자의 세션 관리(로그인 상태, 프로필 설정 등), 개인화(사용자 선호도 및 테마 설정) 및 사용자 행동 추적(방문한 페이지, 클릭한 링크 등)에 사용됩니다.
    1. 세션
      1. 웹 상에서의 통신은 상태가 없는 특성을 가지고 있어 이전 상호 작용을 기억하지 않는다.
      2. 사용자가 웹사이트에 로그인할 때, 서버는 세션 ID를 생성하여 사용자의 브라우저에 쿠키 형태로 저장된다.
      3. 이후 모든 요청(예:다른 페이지로 이동)에  이 세션 ID를 포함 시킵니다. 서버는 이 ID를 통해 사용자의 세션 데이터에 접근하여 사용자별 상태 정보를 유지할 수 있습니다.
      4. 세션 ID를 사용하여 서버측에 저장된 해당 세션 ID와 연결된 세션 데이터에 접근한다.
      5. 세션 데이터는 메모리, 데이터베이스, 파일 시스템 등 서버측에 저장될 수 있다.

WKNavigationDelegate

optional func webView(
    _ webView: WKWebView,
    decidePolicyFor navigationAction: WKNavigationAction,
    preferences: WKWebpagePreferences,
    decisionHandler: @escaping (WKNavigationActionPolicy, WKWebpagePreferences) -> Void
)
  1. 탐색 요청을 허용하거나 거부하려면 이 메소드를 사용한다.
  2. 웹뷰는 상호작용이 발생한 후 컨텐츠 로드를 시도하기 전에 이 메소드를 호출한다.
  3. delegate가 이 메서드를 구현하는 경우 웹뷰는 webView(_:decidePolicyFor:decisionHandler:) 메서드를 호출하지 않는다.
  4. preferences와 action information(웹 페이지의 탐색 요청과 관련된 정보)를 기반으로 새 콘텐츠를 탐색할 수 있는 권한을 delegate에게 요청합니다.
  5. webview : 탐색 요청이 시작된 웹뷰
  6. navigationAction : 탐색 요청을 트리거한 action에 대한 세부정보
    • var navigationType
      • 탐색을 트리거한 액션의 타입
        • 리로드, 뒤로 가기, 링크 를 구별하고 싶을 때 사용
    • var request 
      • URL request
  7. preferences :
    • 새 웹페이지를 표시할 때 사용할 기본 환경 설정
    • 웹뷰를 생성할 때 WKWebViewConfiguration의 defaultWebpagePreferences 속성을 사용하여 페이지의 기본 환경 설정을 지정한다.
  8. decisionHandler
    • 탐색 허용 또는 취소 여부에 대한 결과를 호출하기 위한 완료 핸들러 블록
    • 이 핸들러는 반환 값이 없으며 다음 매개 변수를 사용한다.
      • policy
        • 탐색을 취소할지 허용할지를 나타내는 상수
      • preferences
        • 탐색이 허용되는 경우 페이지에 적용할 기본 설정 집합
        • preferences 매개변수에서 개체를 전달하거나 새 preferences를 구성하고 대신 전달할 수 있다.
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
          • 이전에 실패한 인증 시도 횟수
          • 이 값은 이전에 도전에 대한 인증이 실패한 경우에 사용될 수 있습니다.
          •  
  • completionHandler
    • 응답과 함께 실행할 완료 핸들러 블록
    • 반환값이 없으며 다음 매개변수를 사용함
    • dispostion(처분)
      • 문제를 처리하는데 사용하는 옵션
    • credentail(신임장)
      • disposition 매개변수에 URLSession.AuthChallengeDisposition.useCredential이 포함된 경우 인증에 사용할 자격 증명
        • URLSession.AuthChallengeDisposition 
          • 세션 또는 task delegate가 authentication challenge에 대한 응답으로 제공된 블록에 전달한 상수
          • 세션 : 사용자 정보를 저장하는 방법
      • 자격 증명 없이 계속하려면 nil을 지정
  • 이 메서드를 구현하지 않으면 웹뷰는 URLSession.AuthChallengeDisposition.rejectProtectionSpace 처리를 사용하여 인증 요청에 응답합니다.
    • URLSession.AuthChallengeDisposition.rejectProtectionSpace
      • challenge를 거부하고 다음 authentication 보호 공간으로 authentication delegate 메서드를 다시 호출한다.
      • 지공된 credectial 매개 변수는 무시된다.
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
      • 웹페이지에서 요청한 윈도우 특성
      • 웹페이지가 새 윈도우를 열려고 할 때 요청한 윈도우의 속성 및 기능에 대한 정보
      • 예를 들어, 팝업 창의 크기, 위치, 스크롤 막대 여부등을 설정할 수 있다.
  • 반환 값
    • 새로운 웹 뷰
    • 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
      • 알림 패널이 닫힌 후에 호출해야하는 완료 핸들러
      • 이 핸들러는 알림 패널이 사용자에 의해 닫힌 후에 호출되며, 닫기 작업이 완료되었읍을 알린다.
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
      • 패널에 표시되는 기본 텍스트
      • 사용자가 입력하는 데 사용될 초기 텍스트 값을 제공할 수 있습니다.

 

optional func webView(
    _ webView: WKWebView,
    showLockdownModeFirstUseMessage message: String,
    completionHandler: @escaping (WKDialogResult) -> Void
)
  • Lockdown Mode의 첫 사용 메시지를 표시하는 메서드
    • Lockdown Mode 
      • 보안을 위해 사용
      • 사용자가 제한된 기능만 사용할 수 있도록 하는 모드
  • 매개 변수
    • completionHandler
      • 비동기 작업이 완료되었을 때 호출해야하는 블록이다.
      • 웹뷰가 첫 사용 다이얼로그를 표시하고 사용자 상호작용이 완료되었을 때 이 블록을 호출하여 앱의 실행을 재개할 수 있습니다.
      • 이 블록은 결과를 반환하지 않으며, 대신 다음과 같은 매개 변수를 받습니다.
      • dialogResult
        • display result case 라고 불리는 enum 케이스이다.
        • 이 케이스를  이 메서드가 첫 사용 다이얼로그 작업을 어떻게 처리했는지를 나타낸다
        • success, failure

 

optional func webView(
    _ webView: WKWebView,
    runOpenPanelWith parameters: WKOpenPanelParameters,
    initiatedByFrame frame: WKFrameInfo,
    completionHandler: @escaping ([URL]?) -> Void
)
  • 파일 업로드 패널을 보여준다.
  • 매개 변수
    • parameters
      • 파일 열기 다이얼로그의 매개변수를 나타낸다.
      • UI에 대한 정보 및 파일 필터와 같은 다양한 설정이 여기에 포함될 수 있다.
    • frame
      • 파일 열기 동작을 시작한 프레임에 대한 정보를 포함한다.
      • 웹 페이지 내에서 어떤 프레임에서 파일 열기 동작이 시작되었는지를 나타낸다.
    • completion Handler
      • 사용자가 파일을 선택한 후 호출해야하는 완료 핸들러
      • 이 핸들러를 호출하여 사용자가 선택한 파일의 URL을 전달하고 처리할 수 있습니다. 
      • 파일을 선택하지 앟거나 취소한 경우 nil을 전달할 수도있다.
optional func webView(
    _ webView: WKWebView,
    contextMenuConfigurationForElement elementInfo: WKContextMenuElementInfo,
    completionHandler: @escaping (UIContextMenuConfiguration?) -> Void
)
  • 웹페이지에서 콘텍스트 메뉴 상호작용이 시작될 때 호출된다.
  • 이 메서드를 사용하여 컨텍스트 메뉴가 표시 되어야하는지 여부를 결정하고, 사용자가 요소를(element) 클릭했을때 표시될 컨텍스트 메뉴의 구성(configuration)을 설정할 수 있습니다.
  • 매개 변수
    • elementInfo
      • 컨택스트 메뉴가 표시될 요소에 대한 정보를 포함한다.
      • 이 정보를 기반으로 컨택스트 메뉴가 어떻게 구성되어야하는 지를 결정할 수 있습니다.
    • completionHandler 
      • configuration을 설정한 후 호출해야하는 완료 핸들러
      • 이 핸들러를 호출하여 컨텍스트 메뉴를 반환하거나, 메뉴를 표시하지 않을 경우 nil을 반환할 수 있습니다.

 

optional func webView(
    _ webView: WKWebView,
    contextMenuForElement elementInfo: WKContextMenuElementInfo,
    willCommitWithAnimator animator: UIContextMenuInteractionCommitAnimating
)
  • 웹뷰가 컨텍스트 메뉴를 표시하는 데(웹뷰 내의 요소를 길게 누를때 나타남) 사용하는 애니메이터 객체를 델리게이트에게 제공하는 역할을 합니다.
  • 이 메소드를 구현함 으로서 메뉴의 동작 및 모양을 사용자 정의할 수 있다.
  • 매개 변수
    • elementInfo
      • 사용자가 길게 누른 요소에 대한 정보를 나타냄
      • 요소의 유형(링크, 이미지), 해당 URL및 관련 정보등이 포함될 수 있습니다.
    • animator
      • 웹뷰가 컨텍스트 메뉴를 표시하는데 사용하는 애니메이터 객체를 제공합니다.
      • 애니메이터 객체는 컨텍스트 메뉴와 관련된 애니메이션 또는 전환에 사용될수 있습니다.

 

optional func webView(
    _ webView: WKWebView,
    contextMenuWillPresentForElement elementInfo: WKContextMenuElementInfo
)
  • 컨텍스트 메뉴를 표시하기 직전에 호출된다.
  • 웹뷰가 지정된 요소에 대한 컨텍스트 메뉴를 표시하기 전에 델리게이트에게 알려줍니다.
  • 컨텍스트 메뉴의 내용을 동적으로 조절하거나 요소에 대한 추가 정보를 제공하는 등의 작업을 수행핳 수 있습니다.
    • 매개 변수 
      • elementInfo
        • 컨텍스트 메뉴가 표시되는 대상 요소에 대한 정보를 포함합니다.
        • 요소의 유형, 위치 또는 다른 관련 정보가 포함될 수 있습니다.
optional func webView(
    _ webView: WKWebView,
    contextMenuDidEndForElement elementInfo: WKContextMenuElementInfo
)
  • 컨텍스트 메뉴를 해제한 후에 호출된다.
  • 컨텍스트 메뉴가 닫힌 후 추가 작업을 수행할 수 있습니다.
  • 매개 변수
    • elementInfo
      • 컨텍스트 메뉴가 해제된 요소에 대한 정보를 포함합니다.
      • 요소의 유형,  위치 또는 다른 관련 정보가 여기에 포함될 수 있습니다.

 

 

optional func webView(
    _ webView: WKWebView,
    willDismissEditMenuWithAnimator animator: UIEditMenuInteractionAnimating
)
  • 웹뷰가 edit menu를 해제하기 직전에 호출된다.
  • 매개 변수
    • 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
      • 웹 리소스가 기기 방향 및 동작 정보에 엑세스 권한을 부여할지 또는 거부할지 결정하기 위해 개발자로서 제공해야하는 완료 핸들러
  • 반환 값
    • 권한을 결정하는 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
      • 웹 리소스가 마이크 오디오와 카메라 비디오 에 엑세스 권한을 부여할지 또는 거부할지 결정하기 위해 개발자로서 제공해야 하는 완료핸들러이다.
      • 이 핸들러를 사용하여 권한을 허용하거나 거부하는 결정을 내릴 수 있다.

'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