inappwebview 기본 설정

1. Inappwebview 추가

flutter pub add inappwebview

터미널에 해당 명령어를 입력하여 패키지 추가

플랫폼 사전 설정
  • 안드로이드

    android/app/src/main/AndroidManifest.xml 에 권한 추가

    <uses-permission android:name="android.permission.INTERNET" />

    ⚠️ The plugin flutter_inappwebview requires a higher Android SDK version 오류가 발생한다면 SDK 최소버전 문제이므로 android/app/build.gradle 내 minSdkVersion를 17이상으로 지정해주자!

  • iOS

    ios/Runner/Info.plist에 권한 추가

    <key>NSAppTransportSecurity</key>
    	<dict>
    		<key>NSAllowsArbitraryLoads</key><true/>
    	</dict>

권한을 추가 안하여도 실행은 가능, 권한 추가 차이 추후 확인 필요

Flutter Main 함수 내 메서드 호출 추가

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

2. Inappwebview 기본 세팅

  • key

    위젯을 고유하게 식별하는데 사용되며, 위젯의 상태를 유지하고 특정 위젯을 식별하여 조작할 수 있다.

    GlobalKey를 선언하여 key값으로 넣어줌

  • initialUrlRequest

    웹 뷰를 처음 실행할 때 초기 URL 요청으로, 로드 될 URL 뿐만 아니라 HTTP 메소드(GET, POST 등), 헤더, 캐시 정책, 타임아웃 및 기타 요청 관련 정보가 포함 될 수 있다.

  • initialFile

    웹뷰가 로드될 때 처음에 표시할 로컬 파일의 경로를 지정한다. 이를 통해 앱의 로컬 파일 시스템에 저장된 HTML 파일 등을 웹뷰에서 로드할 수 있다.

  • initialData

    HTML 문자열이나 데이터를 지정하여 웹뷰가 처음에 표시할 내용을 설정한다. 이를 통해 문자열 형태의 HTML 데이터를 직접 웹뷰에 전달하여 초기 페이지로 표시할 수 있다.

  • initialUserScripts

    웹뷰가 로드되면서 삽입될 사용자 지정 스크립트를 정의한다. 이를 통해 로드 되는 동안 추가적인 스크립트를 삽입하여 웹페이지의 동작을 변경하거나 특정 기능을 추가할 수 있다.

  • contextMenu

    컨텍스트 메뉴의 동작을 설정한다. 사용자가 웹뷰 내에서 요소를 길게 누르면 표시되는 컨텍스트 메뉴의 동작(링크 열기, 링크 새 탭에서 열기, 이미지 저장, 이미지 공유 등)을 커스터마이징 할 수 있다.

  • implementation

    플랫폼별로 웹뷰 구현체를 지정하는 데 사용. 특정 플랫폼(Android 또는 iOS)에서만 작동하는 웹뷰 구현체를 선택할 수 있다.

  • windowId

    웹뷰의 윈도우 ID를 설정하여 웹뷰간의 통신등에 사용된다.

  • Progress

    double 형태로 progress 초기값 0으로 선언하여 onProgressChanged 등에 사용할 수 있다.

    이를 통해 웹뷰가 켜지는 진행상태를 화면에 노출 시킬 수 있다.

  • InAppWebViewController

    onWebViewCreated에서 웹뷰 컨트롤러를 선언하여 여러 웹뷰 함수에 설정하고 제어할 수 있다.

InAppWebViewController Function Example

🌟 표시는 자주 사용됨

  • 🌟 getUrl() : 현재 페이지의 Url 주소를 받아옴. Future<Uri?>로 반환

  • getTitle() : 현재 페이지의 타이틀을 받아옴. Future<String?>로 반환

  • getProgress() : 현재 페이지의 progress로 받아옴. Future<int?>로 반환되며 0 ~ 100 사이값

  • 🌟 loadUrl(URLRequest(Uri.parse(String url)))) : 해당 url 페이지를 띄움. URLRequest를 통해 ‘GET’, ‘POST’ 요청 전송 둘 다 가능

  • postUrl(Uri.parse(String url),Uint8List) : Data를 넣어 Post 형식으로 전송 해당 url 페이지를 띄움. 위 loadUrl의 URLRequest에 method를 ‘POST’로 설정하고 body를 넣어 보낼때와 차이점 은 없는 듯.

  • loadData(String data, {String mimeType = 'text/html', String encoding = 'utf8', String? baseUrl}) : 문자열 데이터를 사용해 로드.

  • loadFile(String assetFilePath, {Map<String, String>? headers}) : 앱 내부의 파일을 webview로 띄움.

  • 🌟 reload() : 현재 페이지를 다시 로드함.

  • 🌟 goBack() : 이전 페이지로 이동.

  • canGoBack() : 이전 페이지를 이동할 수 있는지 확인함. Future<bool>로 반환

  • 🌟 goForward() : 다음 페이지로 이동.

  • canGoForward() : 다음 페이지를 이동할 수 있는지 확인함. Future<bool>로 반환

  • isLoading() : 웹뷰 상태가 로딩중인지 확인함. Future<bool>로 반환

  • 🌟 stopLoading() : 로딩중인 웹뷰를 중단시킴.

  • 🌟 evaluateJavascript(String source) : 웹뷰 내에서 해당 자바스크립트 소스를 실행시킴.

  • addUserScript(UserScript) : 웹뷰 내에 해당 스크립트 소스를 추가함.

    evaluateJavascript() vs addUserScript()

    evaluateJavascript()는 현재 실행중인 웹뷰에 자바스크립트 코드를 실행하고 결과 값을 반환 받을 수 있다. 페이지가 로드된 후에 자바스크립트를 실행하거나 특정 이벤트에 대한 응답으로 자바 스크립트를 실행하는데 사용된다.

    addUserScript()는 사용자가 정의한 자바스크립트 코드를 웹뷰에 추가하는데 사용되며 페이지가 로드될 때 자동으로 웹뷰에 삽입된다. 웹 페이지 동작을 변경하거나 보완할때 사용된다.

  • 🌟 addJavaScriptHandler(String handlerName, JavaScriptHandlerCallback callbackFunction) : JavaScript와 Flutter 간에 통신하기 위한 JavaScript 핸들러를 추가함.

  • removeJavaScriptHandler(String handlerName) : 해당 JavaScript 핸들러 삭제

  • setOptions(InAppWebViewGroupOptions options) : 웹뷰에 옵션을 추가함. 옵션 내용은 아래 [InAppWebViewGroupOption] 참조.

  • getOptions() : 현재 웹뷰 옵션을 불러옴. Future<InAppWebViewGroupOptions?>로 반환.

  • 🌟 clearCache() : 웹뷰 캐시를 삭제.

  • scrollBy(int x, int y, bool animated) : 현재 웹뷰 페이지 스크롤을 원하는 위치로 이동시킴.

  • getScrollX() : 현재 웹뷰의 좌측으로 부터 스크롤 위치값 반환. Future<int?> 로 반환

  • canScrollVertically() : 수직 스크롤이 가능한지 확인함. Future<bool>로 반환

  • getScrollY() : 현재 웹뷰의 상단으로 부터 스크롤 위치값 반환. Future<int?> 로 반환

  • canScrollHorizontally() : 수평 스크롤이 가능한지 확인함. Future<bool>로 반환

  • zoomBy(double zoomFactor) : 현재 웹뷰를 해당 비율로 확대/축소 함.

  • getZoomScale() : 현재 웹뷰의 확대/축소 비율을 불러옴. Future<double?> 로 반환

  • PullToRefreshController

    당겨서 새로고침 컨트롤러를 선언하여 상단을 끌어내렸을때, 새로고침 되는 함수나 테마를 설정하고 제어할 수 있다.

    // 당겨서 새로고침 컨트롤러 설정
        pullToRefreshController = PullToRefreshController(
          options: PullToRefreshOptions(
            color: Colors.blue, // 새로고침 아이콘 색상
          ),
          // 플랫폼별 새로고침
          onRefresh: () async {
            if (Platform.isAndroid) {
              webViewController?.reload();
            } else if (Platform.isIOS) {
              webViewController?.loadUrl(
                  urlRequest: URLRequest
    							(url: await webViewController?.getUrl()));
            }
          },
        );
  • InAppWebViewGroupOption

    웹 뷰를 설정하는 옵션들로 공용 옵션, android용 옵션, iOS용 옵션으로 나누어져 있다.

crossPlatform option

크로스플랫폼 공용의 옵션.

🌟 표시는 자주 사용됨

  • 🌟 useShouldOverrideUrlLoading : ShouldOverrideUrlLoading 사용 여부. 기본값은 false

  • 🌟 useOnLoadResource : OnLoadResource 사용 여부. 기본값은 false

  • 🌟 useOnDownloadStart : useOnDownloadStart 사용 여부. 기본값은 false

  • clearCache : 새로운 웹뷰가 오픈되기전에 모든 브라우저의 캐시를 클리어함. 기본값은 false

  • userAgent : Webview가 서버로 보내는 사용자 에이전트 문자열를 정의함. 사용자 에이전트는 클라이언트(브라우저나 앱)가 서버에게 전송하는 정보로 일반적으로 OS, 버전, 기기, 웹 브라우저 등과 같은 사용자 식별 정보를 유저에이전트 HTTP 헤더에 일정한 구조로 담고 있다.

  • applicationNameForUserAgent : 사용자 에이전트에 추가할 애플리케이션 이름을 정의 이 값은 사용자 에이전트에 애플리케이션의 이름을 추가하여 서버가 해당 앱을 인식할 수 있도록 함.

  • javaScriptEnabled : 자바스크립트 활성화 여부. 기본값은 true

  • javaScriptCanOpenWindowsAutomatically : 새 창(팝업)을 열 때의 동작을 제어함. true일 때, 자바스크립트에서 ‘window.open()’을 통해 팝업을 띄울 수 있으며 반대의 경우에는 자동 팝업이 차단된다. 기본값은 false

  • mediaPlaybackRequiresUserGesture : 미디어(오디오나 비디오) 재생이 사용자 제스처를 필요로하는지 여부. 기본값은 true. 즉 자동재생 사용 유무

  • minimumFontSize : 최소화 폰트 사이즈. 기본값은 android가 8, iOS가 0

  • verticalScrollBarEnabled : 수직 스크롤바 표시 여부. 기본값은 true

  • horizontalScrollBarEnabled : 수평 스크롤바 표시 여부. 기본값은 true

  • resourceCustomSchemes : 사용자 정의 리소스 스키마 정의. WebView.onLoadResourceCustomScheme을 통해 특정 스키마를 사용하여 리소스를 로드하고 혀용할 수 있다.

  • contentBlockers : 컨텐츠 차단 리스트. 광고나 특정 콘텐츠 차단할때 사용.

  • preferredContentMode : 선호하는 컨텐츠 모드 설정. 데스크탑이나 모바일 모드, 추천 모드 등을 설정할 수 있다.

  • 🌟 useShouldInterceptAjaxRequest : Ajax 특정 요청을 간섭하여 내용을 변경하거나 재정의 할 수 있다. 기본값은 false.

  • 🌟 useShouldInterceptFetchRequest : Fetch 특정 요청을 간섭하여 내용을 변경하거나 재정의 할 수 있다. 기본값은 false.

  • incognito : incognito 모드(시크릿 모드)로 브라우저 실행 여부. 데이터나 캐시를 남기지 않는다. 기본값은 false

  • cacheEnabled : 캐시 활성화 여부. 기본값은 true

  • transparentBackground : 웹뷰 배경 투명하게 설정할 수 있다. 기본값은 false

  • disableVerticalScroll : 수직 스크롤 활성화 여부. 기본값은 fasle

  • disableHorizontalScroll : 수평 스크롤 활성화 여부. 기본값은 fasle

  • disableContextMenu : 컨텍스트 메뉴 비활성화 여부. 기본값은 false

  • supportZoom : 화면 확대/축소 지원 여부. 기본값은 true

  • allowFileAccessFromFileURLs : URL을 통한 파일 접근 허용 여부. ‘file://’ URL을 통해 로드된 페이지가 로컬 파일에 접근 할 수 있으며 보안상의 이유로 기본값은 false

  • allowUniversalAccessFromFileURLs : URL을 통해 로드된 페이지가 모든 도메인의 자원에 접근할 수 있는지에 대한 여부로 보안상의 이유로 기본값은 false

android option

android 플랫폼에만 적용되는 옵션

🌟 표시는 자주 사용됨

  • textZoom : 텍스트 확대/축소로 기본값은 100.

  • clearSessionCache : 각 윈도우가 열릴때마다 세션 캐시를 초기화 여부. 기본값은 false

  • builtInZoomControls : 웹뷰에 내장된 확대/축소 컨트롤 활성화 여부. 기본값은 true

  • displayZoomControls : 웹뷰의 확대/축소 컨트롤 표시 여부. 기본값은 false

  • databaseEnabled : database 저장소(HTML5 Web SQL 데이터베이스) API 활성화 여부. 기본값은 true

  • domStorageEnabled : dom 저장소(웹페이지가 클라이언트 측에서 데이터를 저장하는 기능을 제공) API 활성화 여부. 기본값은 true

  • 🌟 useWideViewPort : 와이드 뷰 포트 활성화 여부. 활성화시 뷰포트가 확장되어 줌인/아웃이 더 자유로워진다. 기본값은 true

  • 🌟 safeBrowsingEnabled : Google Safe Browsing 활성화 여부. 이를 통해 사용자를 위협하는 악성 웹사이트로 부터 보호할 수 있다. 기본값은 true

  • 🌟 mixedContentMode : 안전한 출처(HTTPS)에서 보안되지 않은 출처(HTTP)로부터 리소스를 가져올 때 WebView의 동작을 제어함

  • 🌟 allowContentAccess : 컨텐츠 접근 권한 활성화 여부. 기본값은 true

  • 🌟 allowFileAccess : 파일 접근 권한 활성화 여부. 기본값은 true

  • appCachePath : 캐시 경로를 설정해줌. 어플리케이션 캐시 API가 활성화 되어있다면 해당 경로는 앱이 접근가능할 수 있어야한다.

  • blockNetworkImage : 네트워크로 로드되는 이미지 리소스 블락 활성화 여부. 기본값은 false

  • blockNetworkLoads : 네트워크로 로드되는 리소스 블락 활성화 여부. 이미지 뿐만 아니라 스크립트, 스타일시트, iframe 등 웹페이지의 모든 네트워크 리소스를 차단하며 기본값은 false

  • 🌟 cacheMode : 캐시 모드 설정. 페이지 로딩시 캐시를 사용하거나 사용하지 않도록 설정이 가능하다. 기본값은 AndroidCacheMode.LOAD_DEFAULT

  • cursiveFontFamily : cursiveFont 설정. 손글씨체이며 기본값은 cursive

  • defaultFixedFontSize : 고정 폰트 사이즈. 기본값은 16

  • defaultFontSize : 기본 폰트 사이즈. 기본값은 16

  • defaultTextEncodingName : 기본 텍스트 인코딩 설정. 기본값은 UTF-8

  • disabledActionModeMenuItems : 웹뷰의 텍스트 선택시 나타나는 액션 메뉴내에 항목들(복사, 붙여넣기, 검색 등)을 지정하여 비활성화시킬 수 있다.

  • fantasyFontFamily : fantasyFont 설정. 판타지 폰트이며 기본값은 fantasy

  • fixedFontFamily : fixedFont 설정. 고정 폰트이며 기본값은 monospace

  • forceDark : 웹뷰의 다크모드 설정. 기본값은 AndroidForceDark.FORCE_DARK_OFF

  • 🌟 geolocationEnabled : 지리 위치 정보 사용 활성화 여부. 기본값은 true

  • layoutAlgorithm : 컨텐츠를 렌더링할 때 사용하는 레이아웃 알고리즘을 설정함. 페이지의 컨텐츠를 화면에 어떻게 배치할지를 결정하는데 영향을 준다.

  • loadWithOverviewMode : 페이지를 오버뷰모드로 로드할지 설정함. 기본값은 true이지만 useWideViewPort가 활성화 되어있다면 기본값은 false

  • loadsImagesAutomatically : 이미지 자동 로딩 활성 여부. 기본값은 true

  • minimumLogicalFontSize : 최소 논리적 폰트 사이즈. 기본값은 8

  • needInitialFocus : 초기 포커스 활성화 여부. 기본값은 true

  • offscreenPreRaster : Offscreen 렌더링(사용자가 스크롤하거나 화면을 이동할 때 부드러운 스크롤 및 애니메이션을 제공하기 위해 미리 이미지를 래스터링하여 준비하는 기술)을 사용할 때 사전 래스터링 활성화 여부로 기본값은 false

  • sansSerifFontFamily : sans-serif 폰트 설정. 기본값은 “sans-serif”

  • serifFontFamily : sans 폰트 설정. 기본값은 “sans-serif”

  • standardFontFamily : 기본 폰트 설정. 기본값은 "sans-serif”

  • saveFormData : 폼 데이터(아이디, 비밀번호 등) 저장 여부. 기본값은 true

  • thirdPartyCookiesEnabled : 웹뷰 내 third party cookies(주로 도메인이 다른 두 웹사이트 간에 발생하는 쿠키) 활성화 여부. 기본값은 true

  • 🌟 hardwareAcceleration : 웹뷰에서 하드웨어 가속화 사용 여부. 기본값은 true

  • initialScale : 초기 확대/축소 비율. 기본값은 0으로 initialScale에 맞춰 웹뷰가 실행된다.

  • supportMultipleWindows : 다중창 지원 활성화 여부. 기본값은 false

  • regexToCancelSubFramesLoading : 해당 정규식 패턴(특정 도메인이나 패턴)에 맞는 서브 프레임의 로딩을 취소할 수 있다.

  • useHybridComposition : useHybridComposition([렌더링 엔진 → 그래픽 엔진]을 사용하여 웹 콘텐츠를 표시) 활성화 여부. 기본값은 false

  • 🌟 useShouldInterceptRequest : useShouldInterceptRequest 사용 여부. 웹 리소스 요청에 간섭할 수 있다. 기본값은 false

  • useOnRenderProcessGone : useOnRenderProcessGone 사용 여부. 렌더링 프로세스가 종료될 때 이벤트 처리가 가능하다. 기본값은 false

  • overScrollMode : 오버스크롤 모드 활성화 여부.

  • networkAvailable : 네트워크 활성화 여부. 자바스크립트의 window.navigator.isOnline을 설정하거나 온/오프라인 이벤트를 생성하는데 활용된다. 오프라인 상태에서 웹뷰를 사용하거나 특정 시나리오에서 네트워크 액세스를 제한할 때 사용됨

  • scrollBarStyle : 스크롤바 스타일 설정

  • verticalScrollbarPosition : 수직 스크롤바의 위치 지정

  • scrollBarDefaultDelayBeforeFade : 스크롤바가 사라지기 전에 표시되는 시간 제어

  • scrollbarFadingEnabled : 스크롤바 페이드 인/아웃 활성화 여부. 기본값은 true

  • scrollBarFadeDuration : 스크롤바가 페이드 인/아웃되는데 걸리는 시간 제어

  • rendererPriorityPolicy : 렌더링 우선 순위를 설정

  • disableDefaultErrorPage : 기본 안드로이드 에러 페이지 활성화 여부. 기본값은 false

  • verticalScrollbarThumbColor : 수직 스크롤바의 Thumb(바가 움직이는 부분) 색상 설정

  • verticalScrollbarTrackColor : 수직 스크롤바의 Track(바 전체 영역) 색상 설정

  • horizontalScrollbarThumbColor : 수평 스크롤바의 Thumb(바가 움직이는 부분) 색상 설정

  • horizontalScrollbarTrackColor : 수평 스크롤바의 Track(바 전체 영역) 색상 설정

iOS option

iOS 플랫폼에만 적용되는 옵션

🌟 표시는 자주 사용됨

  • disallowOverScroll : 오버스크롤 바운싱 효과 여부. 기본값은 false

  • enableViewportScale : 뷰포트 스케일 활성화 여부로 페이지에서 화면 크기 조정 여부와 같다. 기본값은 false

  • suppressesIncrementalRendering : 웹뷰에서 컨텐츠를 즉시 렌더링하는 것을 억제하고, 전체 컨텐츠를 받은 후 한꺼번에 렌더링하는지에 대한 여부이며, 기본값은 false

  • allowsAirPlayForMediaPlayback : 미디어 재생시 airPlay 모드(애플의 무선 스트리밍 기술로, 사용자가 iOS 기기에서 오디오, 비디오, 사진 등을 Apple TV나 호환되는 다른 AirPlay 지원 장치로 전송할 수 있게 함) 지원 여부. 기본값은 true

  • allowsBackForwardNavigationGestures : 앞/뒤 네비게이션 제스처 허용 여부. 기본값은 true

  • allowsLinkPreview : 링크에 대한 미리보기 활성화 여부. 기본값은 true

  • ignoresViewportScaleLimits : 뷰포트 스케일 제한 활성화 여부로 true일시 페이지가 화면 크기를 넘어서거나 제한 이상으로 더 크게 나타나게 할 수 있다. 기본값은 false

  • allowsInlineMediaPlayback : 인라인 미디어(미디어 실행시 전체화면 재생이 아니라 페이지 내 인라인으로 재생되며 미디어 터치시 전체화면으로 재생) 재생 활성화 여부. 기본값은 false

  • 🌟 allowsPictureInPictureMediaPlayback :PIP(Picture-in-Picture, 다른 앱이나 화면 위에 작은 창으로 띄울 수 있다) 미디어 재생 활성화 여부. 기본값은 true

  • isFraudulentWebsiteWarningEnabled : 사기 사이트 경고 활성화 여부. 기본값은 true

  • selectionGranularity : 텍스트 선택 정밀도(단위가 문자, 단어, 문장, 문단 등으로 설정됨)를 설정한다. 기본값은 IOSWKSelectionGranularity.DYNAMIC

  • dataDetectorTypes : 자동으로 감지할 데이터 타입(전화번호, 이메일 등)을 설정한다. IOSWKDataDetectorTypes 타입으로 사용함

  • sharedCookiesEnabled : 쿠키 공유 활성화 여부로 앱 내 여러 웹뷰 사용시 동일한 쿠키 세션을 공유하도록 하여 로그인 상태 등의 정보를 유지하는 데 사용된다. 기본값은 false

  • automaticallyAdjustsScrollIndicatorInsets : 스크롤 바의 여백 자동 조정 여부. 기본값은 false

  • accessibilityIgnoresInvertColors : 접근성 기능 중 반전 색상 차단 여부. 기본값은 false

  • decelerationRate : 스크롤 감속률을 설정한다. 기본값은 IOSUIScrollViewDecelerationRate.NORMAL

  • alwaysBounceVertical : 항상 수직 방향 스크롤 허용 여부. 허용시 크기가 작은 컨텐츠에서도 스크롤 기능이 가능하다. 기본값은 false

  • alwaysBounceHorizontal : 항상 수평 방향 스크롤 허용 여부. 허용시 크기가 작은 컨텐츠에서도 스크롤 기능이 가능하다. 기본값은 false

  • scrollsToTop : 스크롤링 시 맨 위로 스크롤을 자동으로 이동시킨다. 기본값은 true

  • isPagingEnabled : 페이지 단위로 스크롤하도록 하는 옵션으로 기본값은 false

  • maximumZoomScale : 최대 페이지 확대/축소 비율. 기본값은 1.0

  • minimumZoomScale : 최소 페이지 확대/축소 비율. 기본값은 1.0

  • 🌟 contentInsetAdjustmentBehavior : 스크롤뷰의 컨텐츠 여백 조정 동작을 설정한다. 기본값은 IOSUIScrollViewContentInsetAdjustmentBehavior.NEVER

  • 🌟 isDirectionalLockEnabled : 스크롤 기능 제한(잠금) 여부. 기본값은 false

  • 🌟 mediaType : 페이지를 렌더링할 때 사용되는 미디어 유형을 정의한다. print CSS와 관련된 웹페이지의 표시 방식을 결정한다

  • pageZoom : 페이지 확대/축소 비율. 기본값은 1.0

  • 🌟 limitsNavigationsToAppBoundDomains : 특정 앱에 바운드된 도메인으로의 네비게이션을 제한한다. 활성화시 특정한 앱 도메인에 바운드된 네비게이션만 허용한다. 기본값은 false

  • 🌟 useOnNavigationResponse : OnNavigationResponse 사용 여부.

  • shouldOverrideNavigation을 사용하면 페이지를 바로바로 제어할 수 있다. 기본값은 false

  • applePayAPIEnabled : 애플페이 API 활성화 여부. 기본값은 false

  • allowingReadAccessTo : 다른 출처의 컨텐츠에 대한 접근 허용하는 URL을 설정한다.

  • 🌟 disableLongPressContextMenuOnLinks : 링크에 대한 길게 누르는 제스처로 나타나는 컨텍스트 메뉴 비활성화 여부. 기본값은 false

  • 🌟 disableInputAccessoryView : 입력 액세서리 뷰(이모지, 자동완성 제안 등)를 비활성화 여부. 기본값은 false

3. Inappwebview 콜백 함수들을 통해 시점에 따라 기능 제어

  • onWebViewCreated

    웹뷰가 생성 되었을 때 호출되는 콜백함수. 보통 웹뷰 컨트롤러나 초기 설정 등의 작업을 수행한다.

  • onLoadStart

    페이지 로드가 시작될 때 호출되는 콜백함수. 로딩 인디케이터 노출이나 상태를 표시하고 로그를 기록하는 등의 작업을 수행한다.

  • onLoadStop

    페이지 로드가 완료되었을 때 호출되는 콜백함수. 로딩 인디케이터를 감추거나 상태를 표시하고 로그를 기록하는 등의 작업을 수행한다.

  • onLoadError

    페이지 로드 중 에러가 발생할 때 호출되는 콜백함수. 오류 상태와 에러를 전달한다.

  • onConsoleMessage

    ‘console.log()’와 같은 자바스크립트 콘솔 메시지가 있을 때 호출되는 콜백함수. 해당 메시지를 앱으로 전달한다.

  • shouldOverrideUrlLoading

    페이지 로드를 시도할 때 호출되는 콜백함수. InAppWebViewGroupOption에서 useShouldOverrideUrlLoading 옵션이 true로 설정되어 있어야한다. 페이지 로드의 흐름을 제어하고 특정 URL 로드를 중단하거나 허용, 리디렉션 관리 등의 작업을 수행한다.

  • onLoadResource

    페이지 로딩 중에 리소스(이미지, 스크립트, 스타일시트 등)가 로드될 때 호출되는 콜백함수. 주로 로드된 리소스 추적하고 상태 확인, 특정 리소스의 동작 관리(특정 도메인의 리소스 차단, 특정 CSS파일의 로드 허용)등의 작업을 수행한다.

  • onScrollChanged

    스크롤 이벤트가 발생할 때 호출되는 콜백함수. 스크롤 위치를 추적하여 상태에 따른 동작 제어, 그에 따른 UI 변경등의 작업을 수행한다.

  • onDownloadStart

    파일 다운로드가 시작될 때 호출되는 콜백함수. 주로 다운로드 허용 및 차단, 다운로드 진행 상황이나 파일 관리등의 작업을 수행한다.

  • onCreateWindow

    새 창(새로운 웹뷰 창)을 생성할 때 호출되는 콜백함수. 새 창을 생성하고 관리하며, 다중 창 처리 등의 작업을 수행한다.

  • onCloseWindow

    웹뷰의 창(창 단위의 브라우징 세션)이 닫힐 때 호출되는 콜백함수. 창 닫기 관련 동작(해당 창의 리소스 해제, 관련 데이터의 정리 등)을 수행한다

  • onJsAlert/onJsConfirm/onJsPrompt

    페이지에서 자바스크립트에서 alert()/confirm()/prompt()와 같은 다이얼로그 창을 요청했을 때 호출되는 콜백함수.

  • onProgressChanged

    페이지 로딩의 진행 상태가 변경될 때 호출되는 콜백함수. 주로 페이지 로딩 진행률이 변경되면 이벤트를 처리한다.

  • onReceivedServerTrustAuthRequest

    웹뷰에서 서버의 신뢰 인증 요청(SSL 인증서에 관한 신뢰성을 검증하거나 승인 등의 작업)을 받았을 때 호출되는 콜백함수. SSL 인증서를 검증하고 승인, 거부 및 사용자 확인 등의 작업을 수행한다.

  • onReceivedHttpAuthRequest

    웹뷰에서 HTTP 기본 인증(일반적으로 사용자 이름과 비밀번호) 요청을 받았을 때 호출되는 콜백함수. 주로 인증 정보 제공, 인증 실패 시 처리나 다중 계정 처리등의 작업을 수행한다.

Last updated