ALIOTHX Developers
ALIOTHXMANAGER
  • 😈DEMO App 설치
  • 크로스플랫폼 개발환경
    • ⚙️Flutter 개발환경
    • 🧑‍💻Flutter 시작하기
    • 📲폰에서 실행
    • 개발가이드
    • 🚀솔루션 설치
    • 🚦코드가이드
      • 명명 규칙및 주석처리
      • 코딩 컨벤션
      • 디렉토리 생성및 관리
      • 페이지 작성
    • 🏭Flutter 아키텍쳐
      • 채널링
      • 웹뷰
        • 웹뷰 설정
        • 웹뷰 연동
      • 보안 (Security)
        • 대칭키 암호알고리즘
        • 비대칭키 암호알고리즘
        • 메시지 다이제스트
        • 탈옥및 루팅 탐지및 차단
        • 앱 위/변조 탐지및 차단
        • 코드 난독화
    • 🖥️관리시스템
    • 🎆협업도구
  • UIUX 컴포넌트
    • UI/UX
      • 테마 적용
      • 화면방향전환
      • 토스트 (Toast)
      • 버튼 (Button)
      • 텍스트 (Text)
      • 탭바 (TabBar)
      • 이미지뷰 (ImageView)
      • 카메라/이미지
      • 페이지 트랜지션
      • 입력필드 (TextField)
      • 체크박스 (CheckBox)
      • 라디오버튼 (RadioButton)
      • 로딩바 (Loading Indicator)
      • 바텀시트 (BottomSheet)
      • 리스트뷰 (ListView)
      • 슬리버 (Sliver)
      • 사운드 (Sound)
      • 애니메이션 (Animation)
      • 위치 및 정렬
      • 커스텀 키보드
      • 카드 (Card)
      • 토글 버튼 (Toggle Button)
      • 다이얼로그 (Dialog)
      • QR코드
      • 페이지뷰 (PageView)
  • Common 컴포넌트
    • 공통모듈
      • 데이터통신과 JSON 파싱
      • 인증 연동
      • 채널링
      • 네비게이션
      • 푸시 메시지
      • SMS 인증
      • 예외처리
  • Security 컴포넌트
    • 보안모듈
      • 메시지 다이제스트
      • 암/복호화
  • Option 컴포넌트
    • 옵션모듈
      • 동영상 플레이어
      • 유튜브 연동
      • 차트
      • SNS 공유
      • 지도
      • 로컬 DB
  • 🎁라이센스및 기술지원
  • 🏢고객사
Powered by GitBook
On this page
  • 1. Inappwebview 추가
  • 2. Inappwebview 기본 세팅
  • 3. Inappwebview 콜백 함수들을 통해 시점에 따라 기능 제어
  1. 크로스플랫폼 개발환경
  2. Flutter 아키텍쳐
  3. 웹뷰

웹뷰 설정

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

Previous웹뷰Next웹뷰 연동

Last updated 2 months ago

🏭