목록웹뷰 (136)
투케이2K
[개발 환경 설정] 개발 툴 : AndroidStudio [소스 코드] // ----------------------------------------------------------------------------------------- // TODO [안드로이드 >> 자바스크립트 - 함수 지정] // ----------------------------------------------------------------------------------------- class Android_To_Javascript { // ----------------------------------------- // [안드로이드에서 자바스크립트 호출] // -----------------------------------..
[개발 환경 설정] 개발 툴 : AndroidStudio [소스 코드] // ----------------------------------------------------------------------------------------- // TODO [자바스크립트 >> 안드로이드 - 함수 지정] // ----------------------------------------------------------------------------------------- // [SEARCH FAST] : [자바스크립트 통신] class AndroidBridge { // ----------------------------------------- // [자바스크립트에서 호출하는 안드로이드 메소드] // ------..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : Kotlin [소스 코드] // [웹 페이지 내에서 페이지 이동 key 이벤트 발생] override fun shouldOverrideKeyEvent(view: WebView, event: KeyEvent): Boolean { S_Log._D_(S_FinalMsg.LOG_Event, arrayOf( "URL :: " + view.url.toString(), "설 명 :: " + "웹 페이지 내에서 페이지 이동 key 이벤트 발생" )) return super.shouldOverrideKeyEvent(view, event) }

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : Kotlin [소스 코드] override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) { // [E/chromium: [ERROR:ssl_client_socket_impl.cc 에러 해결 위함] try { // TODO [ssl 접속 에러가 발생한 경우 경고 팝업창 처리 실시] val builder = AlertDialog.Builder(this@A_Webview) builder.setMessage("이 사이트의 보안 인증서는 신뢰하는 보안 인증서가 아닙니다. 계속하시겠습니까?") builder.setPositiveButton..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : Kotlin [소스 코드] // ----------------------------------------- // TODO [크롬 클라이언트 설정 실시] main_webview!!.webChromeClient = object : WebChromeClient() { // TODO [웹 브라우저 콘솔 로그 확인] override fun onConsoleMessage(consoleMessage: ConsoleMessage): Boolean { S_Log._E_(S_FinalMsg.LOG_Message, arrayOf( "URL :: " + main_webview!!.url.toString(), "message [1] :: " + ..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : Kotlin [소스 코드] // ----------------------------------------- // TODO [크롬 클라이언트 설정 실시] main_webview!!.webChromeClient = object : WebChromeClient() { // TODO [실시간 웹뷰 로드 상태 확인] override fun onProgressChanged(view: WebView, progress: Int) { S_Log._E_(S_FinalMsg.LOG_Status_Check, arrayOf( "URL :: " + main_webview!!.url.toString(), "STATUS :: $progress" )) ..

[개발 환경 설정] 개발 툴 : AndroidStudio [속성 설명] 1. android:id : 자바 코드에 매핑을 하기위한 컴포넌트 id 를 지정 2. android:layout_width : 가로 크기 3. android:layout_height : 세로 크기 4. android:layout_weight : 반응형 크기 비율 5. android:text : 텍스트 타이틀 명칭 6. android:textStyle : 텍스트 표시 스타일 7. android:textSize : 텍스트 사이즈 8. android:gravity : 컴포넌트 정렬 기준 9. android:textColor : 텍스트 색상 10. android:background : 컴포넌트 배경 지정 (색상 및 drawable..
[로직 정리] 정리 로직 : MOBILE (Android / Ios) 상태 : [모바일] 웹뷰 (webview) 로드 시 사전 캐시 초기화 로직 [설 명] [모바일] 1. A_Main 클래스 시작 부분에서 네트워크 연결 상태 체크 실시 2. 모바일에 네트워크가 연결 된 경우 >> appVersionHttpRequest 앱 버전 확인 http 요청 실시 (커넥션 타임 5초) 3. 정상적으로 onSuccess 응답을 받은 경우 body 쪽에서 데이터 읽음 - onFail 인 경우 : 커넥션 타임 아웃인 경우는 디스크 캐시 사용해 웹뷰 로드 / 그 외는 캐시 초기화 로직 사용해 웹뷰 로드 4. onSuccess 인 경우 body 쪽에서 읽은 데이터 널 체크 수행 >> 널이 아닌 경우 >> 기존에 저장된..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // [웹뷰 로드 시 요청 헤더 추가 실시] Map extraHeaders = new HashMap(); extraHeaders.put("Cache-Control", "no-cache"); // [웹뷰 주소 로드 및 요청 헤더 포함 실시] main_webview.loadUrl("https://www.naver.com", extraHeaders);

[개발 환경 설정] 개발 툴 : XCODE 개발 언어 : SWIFT [소스 코드] // ----------------------------------------- // [실제 웹뷰 주소 로드] // [초기 웹뷰 로드 주소 설정 실시] var _url = "http://jsonplaceholder.typicode.com/posts?" // [post 쿼리 스트링 데이터 설정 실시] _url = _url + "id=" + "1".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)! _url = _url + "&" + "userId=" + "1".addingPercentEncoding(withAllowedCharacters: .urlHostAl..

[개발 환경 설정] 개발 툴 : XCODE 개발 언어 : SWIFT [소스 코드] // ----------------------------------------- // [웹뷰 userAgent 값 확인 실시] self.main_webview?.evaluateJavaScript("navigator.userAgent"){(result, error) in let originUserAgent = String(describing: result ?? "") print("") print("====================================") print("[\(self.ACTIVITY_NAME) >> init_WebView() :: 기존 userAgent 값 확인 실시]") print("----..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // ----------------------------------------- // [UserAgent 값 확인 및 커스텀 설정 실시 : PC 및 모바일 (Android, Ios) 구분 용도] String userAgent = main_webview.getSettings().getUserAgentString(); Log.i("---","---"); Log.w("//===========//","================================================"); Log.i("","\n"+"[A_Main >> init_WebView() :: 기존 웹뷰 UserAgent 값 확인 실시..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // [class MainWeb extends WebViewClient 메소드 재정의 부분] @Override public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { Log.i("---","---"); Log.e("//===========//","================================================"); Log.i("","\n"+"[A_Main >> onReceivedHttpError() :: [웹 클라이언트]]"); Log.i(""..
[환경 설정 및 설명] 프로그램 : AndroidStudio 설 명 : 특정 사용자 및 디바이스 웹뷰 (Webview) 로드 시 SSL 인증 문제 발생 [에러 원인] 1. 다수 사용자가 아닌 특정 사용자 및 디바이스에서 웹뷰 로드 시 SSL 인증 문제가 발생한 경우는 안드로이드 시스템 웹뷰 및 크롬 브라우저 버전 문제 [해결 방법] 1. 구글 플레이스토어 앱 데이터 및 캐시 삭제 >> 업데이트 수행 실시 2. 기존 설치된 안드로이드 시스템 웹뷰 설치 제거 >> 새로운 버전으로 다운로드 수행 3. 기존 크롬 브라우저 데이터 및 캐시 삭제 >> 업데이트 수행 실시 [추가 다수 웹뷰 로드 시 SSL 인증 문제 발생한 경우] https://kkh0977.tistory.com/1720 3..

[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // ----------------------------------------- // [안드로드이 시스템 설정에 따른 텍스트 크기 변경 안되게 설정 : 퍼블 자체내에 폰트 사이즈 설정] main_webview.getSettings().setTextZoom(100); // ----------------------------------------- [기타 웹뷰 확대 및 축소 설정 관련 코드] // ----------------------------------------- // [스케일 관련] main_webview.setInitialScale(8); main_webview.scrollTo(0,0); // ---..

[개발 환경 설정] 개발 툴 : XCODE 개발 언어 : SWIFT [소스 코드] // MARK: - [뷰 화면 표시] override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) print("") print("====================================") print("[\(self.ACTIVITY_NAME) >> viewDidAppear() :: 뷰 화면 표시]") print("====================================") print("") // ----------------------------------------- // [가상 키보드 높이 구하기 채널 등록] Noti..
[설 명] 프로그램 : Ios / Swift 설 명 : A_Main 웹뷰 앱 라이프 사이클 체크 및 리로드 수행 정리 [SceneDelegate - 소스 코드] import UIKit @available(iOS 13.0, *) class SceneDelegate: UIResponder, UIWindowSceneDelegate { // MARK: - [클래스 설명] /* // ----------------------------------------- 1. UI 딜리게이트 // ----------------------------------------- */ // MARK: - [빠른 로직 찾기 : 주석 로직 찾기] // ----------------------------------------- /..
[설 명] 프로그램 : Android / Java 설 명 : A_Main 웹뷰 앱 라이프 사이클 체크 및 웹뷰 갱신 리로드 수행 정리 [S_Application - 소스 코드] // TODO [프로세스 생명주기 관리] @Override public void onCreate() { try { super.onCreate(); Log.i("---","---"); Log.w("//===========//","================================================"); Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> onCreate() :: 애플리케이션 시작 수행]"); Log.w("//===========//","=====..
[설 명] 프로그램 : Ios / Swift 설 명 : 쿠키 설정 및 웹뷰 로드 수행 실시 클래스 [소스 코드] import UIKit import SafariServices import WebKit import AVFoundation import Photos class A_CookieWebview: UIViewController, WKNavigationDelegate, WKScriptMessageHandler, WKUIDelegate { // MARK: - [클래스 설명] /* // ----------------------------------------- 1. 사용하는 스토리보드 : Main 2. 쿠키 삽입 및 웹뷰 화면 호출 액티비티 화면 // --------------------------..
[설 명] 프로그램 : Android / Java 설 명 : 쿠키 설정 및 웹뷰 로드 수행 실시 클래스 [소스 코드] package com.app.test; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Activ..