The document summarizes the JavaScript Fetch API, which replaces XMLHttpRequests and allows for making network requests and receiving responses. It includes 3 key points:
1) The Fetch API uses a global Fetch object and returns Promises that resolve to Response objects containing the fetched resource. Requests are made via the fetch() method and accept Request objects.
2) Request and Response objects represent the request sent and response received, containing properties like headers, method, url, and status. The Body mixin allows reading request/response bodies.
3) Service Workers act as programmable proxy servers, intercepting and handling network requests and responses, and examples are provided for common use cases like file uploads and streaming with the
Build the Virtual Reality Web with A-FrameMozilla VR
A-Frame is a web framework from Mozilla that makes VR ridiculously easy. A-Frame brings 3D and VR to HTML and JavaScript, allowing us to use the languages, APIs, and tools we all know and love as web developers and designers. Brought to you by MozVR.
Presented
at Forward.js (http://forwardjs.com/)
by Kevin Ngo (https://twitter.com/ngokevin_)
on Wednesday, February 10
Source:
https://github.com/ngokevin/forwardjs-presentation/
Integrating React.js Into a PHP Application: Dutch PHP 2019Andrew Rota
This document discusses integrating React.js into a PHP application. It provides an overview of React.js and its benefits for building user interfaces. It then covers different approaches to server-side rendering (SSR) with React in a PHP application, including using the V8Js PHP extension to run JavaScript, making requests from PHP to a Node.js service, and making requests from Node.js to PHP. It emphasizes that React.js and PHP can complement each other and discusses frameworks like Next.js that support SSR. The key takeaways are that React.js can enhance PHP applications, there are different SSR architectures to integrate them, and giving React.js a try can help modernize app views.
The document discusses the WebKit project and how to contribute to it. It describes WebKit as an open source web browser engine used in browsers and other applications. It provides information on WebKit's architecture, goals, features, ports to different platforms, and the WebKit2 API. It also discusses the large WebKit community, how work is tracked, and how developers can contribute through bug fixing, new features, or creating new ports.
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
Slides contain RESTful solutions based on Python frameworks like Flask and Django. The presentation introduce in REST concept, presents benchmarks and research for best solutions, analyzes performance problems and shows how to simple get better results. Finally presents soruce code in Flask and Django how to make your own RESTful API in 15 minutes.
Efficient and Testable MVVM pattern
김범준
레이니스트 / 안드로이드 개발
레이니스트에서 뱅크샐러드 안드로이드 어플리케이션을 개발하고 있는 5년차 개발자 입니다. Reactive, 함수형 프로그래밍에 관심이 많으며 효율적이고 가독성 있는 코드를 짜는 것을 항상 목표로 부단히 노력중입니다.
The 11 Ultimate Differences You Must Know
The distinction between Vue 2 and Vue 3 is something that is crucial to understand. Continue reading our article on the top 11 most significant differences between Vue 2 and Vue 3.
For More Information: https://www.albiorixtech.com/blog/vue2-vs-vue3-with-top-differences/
OpenXR is a cross-platform API that enables combined real and virtual environments through human-machine interaction, including virtual reality, augmented reality, and mixed reality technologies. The document provides a high-level overview of key concepts in OpenXR, including instances, sessions, spaces, swapchains, input and haptics, and the render loop. It also summarizes how OpenXR separates applications actions from input devices and uses interaction profiles to map actions to inputs.
The document provides an overview of C++17's std::filesystem library. It introduces the Path class for representing file system paths, the DirectoryEntry class for modeling directory entries, and DirectoryIterator for iterating over directories. It also summarizes key support functions for querying and modifying files and directories, handling permissions, and catching errors and exceptions. Examples are provided demonstrating how to get a file size, iterate over a directory, and monitor a directory for changes using std::filesystem.
VueJs is a front-end framework for building JavaScript applications that run in the browser. It allows creation of components, two-way data binding, communication between components, and conditional rendering. To install Vue, use npm to install vue-cli and initialize a project, which will create the initial project structure including a component template with sections for template, script, and style. Components can then be built with data, methods, and bindings for properties like classes and styles.
This document discusses mobile web debugging. It describes Park Jae-sung's background developing the Jindo framework at Naver Labs. It then provides tips on using Weinre and Chrome DevTools for remote debugging of webviews on Android devices.
Functions in JavaScript create a unique execution context each time they are called. The execution context contains an environment record and a variable environment. When a function is defined, it is associated with the lexical environment of the context where it was defined. This means that nested functions have access to variables from outer scopes. Arrow functions lexically bind the value of 'this' from the enclosing context.
The document discusses abstracting loops using generators. It shows how generators can abstract the structure of loops to make them iterable with for-of. This allows composite patterns with multiple nested loops to all be abstracted and exposed via for-of. It also discusses lazy evaluation of loops using generators to delay running loops until needed and avoid overhead up front. Examples show filtering, mapping and chaining these operations lazily on generated iterators.
Container technologies use namespaces and cgroups to provide isolation between processes and limit resource usage. Docker builds on these technologies using a client-server model and additional features like images, containers, and volumes to package and run applications reliably and at scale. Kubernetes builds on Docker to provide a platform for automating deployment, scaling, and operations of containerized applications across clusters of hosts. It uses labels and pods to group related containers together and services to provide discovery and load balancing for pods.
[D2 COMMUNITY] Open Container Seoul Meetup - Kubernetes를 이용한 서비스 구축과 openshiftNAVER D2
Junho Lee is a Solutions Architect who has worked at Rockplace Inc. since 2014. The document compares Kubernetes (k8s), OpenShift, and Google Kubernetes Engine (GKE). k8s is an open-source container cluster manager originally designed by Google. OpenShift is Red Hat's container application platform based on k8s. GKE provides k8s clusters on Google Cloud Platform. Both OpenShift and GKE add services on top of k8s like app stores, logging, monitoring and technical support. The document outlines the key components, architectures and capabilities of each platform.
[D2 COMMUNITY] Open Container Seoul Meetup - Running a container platform in ...NAVER D2
This document discusses containers and related technologies like Docker, Kubernetes, and Openshift. It provides an overview of the container approach taken by GS Shop including their experience running non-microservice applications on containers in production. Some areas they are currently working on include containerized stateful services, multi-tenant container infrastructure, and container infrastructure provisioning automation.
The document discusses various ways to structure microservices using different technologies like React.js, Clojure, and Golang. It provides examples of Dockerfile configurations to daemonize or run microservices that incorporate a React.js or Clojure frontend with a Golang or Clojure backend. It also briefly mentions tools like Webpack, Swagger, and deploying microservices to Azure.
커지고 있는 웹 애플리케이션에서 성능은 점점 더 중요한 요소가 되고 있습니다. 사용자와의 접점에서 긴밀한 상호작용을 요구하는 프런트엔드, 보다 빠르게 로딩되고 부드럽게 구동되어야 하는 웹 애플리케이션을 만들기 위해 노력하는 분들과 함께 이야기를 나눕니다.
목차
1. 로딩 최적화 방법
2. PWA 케이스 소개
3. 렌더링 최적화 방법
대상
- 프런트엔드 성능 개선을 시작하고 싶은 개발자
- 느린 웹 페이지를 빠르게 만드는 데 관심 있는 프런트엔드 개발자
- 로딩/렌더링 최적화에 대한 ��트를 얻고 싶은 개발자
The document discusses various machine learning clustering algorithms like K-means clustering, DBSCAN, and EM clustering. It also discusses neural network architectures like LSTM, bi-LSTM, and convolutional neural networks. Finally, it presents results from evaluating different chatbot models on various metrics like validation score.
The document discusses challenges with using reinforcement learning for robotics. While simulations allow fast training of agents, there is often a "reality gap" when transferring learning to real robots. Other approaches like imitation learning and self-supervised learning can be safer alternatives that don't require trial-and-error. To better apply reinforcement learning, robots may need model-based approaches that learn forward models of the world, as well as techniques like active localization that allow robots to gather targeted information through interactive perception. Closing the reality gap will require finding ways to better match simulations to reality or allow robots to learn from real-world experiences.
[243] Deep Learning to help student’s Deep LearningNAVER D2
This document describes research on using deep learning to predict student performance in massive open online courses (MOOCs). It introduces GritNet, a model that takes raw student activity data as input and predicts outcomes like course graduation without feature engineering. GritNet outperforms baselines by more than 5% in predicting graduation. The document also describes how GritNet can be adapted in an unsupervised way to new courses using pseudo-labels, improving predictions in the first few weeks. Overall, GritNet is presented as the state-of-the-art for student prediction and can be transferred across courses without labels.
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
This document provides a summary of new datasets and papers related to computer vision tasks including object detection, image matting, person pose estimation, pedestrian detection, and person instance segmentation. A total of 8 papers and their associated datasets are listed with brief descriptions of the core contributions or techniques developed in each.
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
This document presents a formula for calculating the loss function J(θ) in machine learning models. The formula averages the negative log likelihood of the predicted probabilities being correct over all samples S, and includes a regularization term λ that penalizes predicted embeddings being dissimilar from actual embeddings. It also defines the cosine similarity term used in the regularization.
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
The document discusses running a TensorFlow Serving (TFS) container using Docker. It shows commands to:
1. Pull the TFS Docker image from a repository
2. Define a script to configure and run the TFS container, specifying the model path, name, and port mapping
3. Run the script to start the TFS container exposing port 13377
The document discusses linear algebra concepts including:
- Representing a system of linear equations as a matrix equation Ax = b where A is a coefficient matrix, x is a vector of unknowns, and b is a vector of constants.
- Solving for the vector x that satisfies the matrix equation using linear algebra techniques such as row reduction.
- Examples of matrix equations and their component vectors are shown.
This document describes the steps to convert a TensorFlow model to a TensorRT engine for inference. It includes steps to parse the model, optimize it, generate a runtime engine, serialize and deserialize the engine, as well as perform inference using the engine. It also provides code snippets for a PReLU plugin implementation in C++.
The document discusses machine reading comprehension (MRC) techniques for question answering (QA) systems, comparing search-based and natural language processing (NLP)-based approaches. It covers key milestones in the development of extractive QA models using NLP, from early sentence-level models to current state-of-the-art techniques like cross-attention, self-attention, and transfer learning. It notes the speed and scalability benefits of combining search and reading methods for QA.
1. 웹뷰 기반의 하이브리드 앱 개발
작성자: 신동길
소속팀/ 상위부서 : 모바일 클라이언트 개발랩
공개용
ⓒ NAVER Corp.
2. 1. 개발시 많이 받는 질문들?
2. WebView 기반의 하이브리드 앱 구조
3. WebView를 사용하기 위한 구조
4. WebView의 설정
5. WebView Trouble Shooting 사례
6. Web Debugging
7. Chromium WebView와 이슈들
8. Q&A
4. 일반
4 / D2 개발자 세미나
Example of Hybrid App
순수 네이티브 앱은 거의 없다
WebView WebView
5. 일반
5 / D2 개발자 세미나
개발자들에게 받는 다양한 웹뷰 이슈(질문)들
네이버앱은 잘 되는데
• 앱이 BG로 갔는데 동영상이 계속 재생되요?
• 웹이 느리고 하얗게 되네요? 캐시를 지워야 되나요?
• 웹에서 왜 파일 첨부(업로드)가 안되죠?
• 풀스크린 동영상이 안되요?
• PC화면으로 볼 때 전체 화면이 안되네요?
• 구글 플레이 링크랑 전화번호 링크가 동작을 안해요?
• 킷캣을 적용했더니 웹뷰가 죽어요?
• 웹뷰를 띄우고 나면 메모리 사용이 너무 많아져요?
• 사진을 여러장 보고 나면 처음으로 가요?
• 다운로드 푸시가 다르네요?
• 상단 타이틀 바는 어떻게 스크롤해요?
• 모바일 페이지인데 스크롤 바가 생겨요?
• 로그인 쿠키가 셋팅이 안될 때가 있어요?
• 앱 타이틀 바를 스크롤하고 싶은데요?
• 파일 첨부가 안 되요?
• 캐시를 다 지우고 싶은데요?
• 쿠키를 셋팅하고 앱을 다시 실행하면 로그인 풀려요?
• 웹에서 앱 설치 여부를 확인할 수 없나요?
• 웹에서 폰의 주소록을 가져올 수가 없나요?
• 네트워크 상태를 웹에서 정확히 알 수가 없나요?
• 다른 앱에서 바로 네이버 검색을 띄우고 싶은데?
• 웹에서 위치 정보에를 못받아요?
6. 일반
6 / D2 개발자 세미나
일반적인 Web-App Hybrid 앱의 구조
InApp
WebView
DataBinder
Framework
DataConnectors
DbManager
Pure App GUI
SeachCookie
Manager
Push Module
InAppBrowser
Download
Service
GUI
Data Core
WebView Framework
InAppWebViewFragement
Login
Service Module
InApp
Purchase
8. 일반
8 / D2 개발자 세미나
WebView 와 관련 객체
WebView
WebChromeClient
WebViewClient
DownloadListenerCookieManager
WebCore
InAppWebViewFragment
9. 일반
9 / D2 개발자 세미나
Webkit 관련 중요 객체
클래스 설명
WebView 웹 페이지를 로드하기 위한 메인 객체이며 View이다,
WebViViewCLient 페이지 로드시에 수행 되는 과정을 위한 Callback 함수들이 정의 되어 있다. 주
로 HTTP Session 의 동작과 관련된 내용이다.
WebChromeClient 페이지 내에서 일어나는 동작에 관련된 Callback 함수를 정의한다. 주로
JavaScript와 HTML%에 관련된 Callback을 정의한다.
DownloadListener 파일을 다운로드 해야 할 경우 다운로드를 위한 Callback 수를 정의한다.
FindListener 페이지 내에서 찾기 기능을 사용할 때 사용한다.
PictureListerner 화면 캡처하고자 할때 결과를 받기 사용한다.
CookieManager
CookieSyncManager
쿠키를 읽고,쓰고, 동기화를 위한 관리 객체이다.
12. 일반
12 / D2 개발자 세미나
HTML5 Storage, AppCache ,Web DB 지원설정
Uncaught TypeError: Object [object
DOMWindow] has no method 'openDatabase'
"SECURITY_ERR: DOM Exception 18"
WebViewSettings
WebChromeClient
13. 일반
13 / D2 개발자 세미나
WebView 의 동작시 함수 호출 Flow
WebChromeClientWebViewClient DownloadListenerWebView
onProgressChanaged()
onReceivedTitle()
shouldInterceptRequest()
onPageStarted()
onPageFinished()
shouldOverrideUrlLoading
onReceivedError()
doUpdateVisitedHistory
onDownloadStart()
onCreateWindow
onShowCustomView
openFileChooser
loadUrl()
onLoadResource()
Click a link onPageStarted()
14. 일반
14 / D2 개발자 세미나
WebView Custom 라이브러리의 필요성
요구사항
• 많은 설정이 필요하고, 기본적인 설정은 반드시 해야 함
• Activity Cycle에 따른 제어가 필요함
• 서비스 URI에 따라 예외적인 처리를 해 주어야 하고, Well-Known URI 처리도 필요
• OS 버전에 따른 파편화 대응 필요
InAppWebView 라이브러리
• Fragment 기반으로 WebViewTimer 및 Cycle 제어
• WebView, WebViewClient, WebChromeClient 의 선언과 설정
• Listener 의 등록/해지
• PlugIn 으로 URI 처리
• OS 버전별 예외처리
16. 일반
16 / D2 개발자 세미나
WebView LifeCycle 제어
사례 1.
단말에 따라서 웹 페이지가 너무 느리게 로딩이 되요. 어떤 때는 하얗게 되요?
캐시가 문제인가요? 아��면 네트워크 설정에 문제가 있나요?
사례2.
웹뷰를 쓰고 나면 메모리가 20MByte 이상 계속 증가해요. 그러다가 죽어요.
페이지가 무거워서 그런건가요? 아니면 캐시가 남아 있나요?
사례3.
홈 키를 눌러 앱을 백그라운드로 보냈는데 동영상이 계속 Play 되고 있어요?
앱이 실행 중이 아닌데 프로세스를 쓰고 계속 배터리를 먹어요.
17. 일반
17 / D2 개발자 세미나
WebView Timer 제어 & Cycle 제어
함수 설명
resumeTimers() Resumes all layout, parsing, and JavaScript timers for all WebViews.
This is a global requests, not restricted to just this WebView. This can be useful
if the application has been paused.
pauseTimers () Pauses all layout, parsing, and JavaScript timers for all WebViews. This is a
global requests, not restricted to just this WebView. This can be useful if the
application has been paused.
onResume() Resumes a WebView after a previous call to onPause().
onPause() Pauses any extra processing associated with this WebView and its associated
DOM, plugins, JavaScript etc. For example, if this WebView is taken offscreen,
this could be called to reduce unnecessary CPU or network traffic. When this
WebView is again "active", call onResume(). Note that this differs from
pauseTimers(), which affects all WebViews.
destroy() Destroys the internal state of this WebView. This method should be called after
this WebView has been removed from the view system. No other methods may
be called on this WebView after destroy
18. 일반
18 / D2 개발자 세미나
WebView Timer 제어 & Cycle 제어 Example
WebView Timer 제어
-Global Timer이므로 앱 내의 모든 웹뷰에 영향을 끼칩니다.
-앱이 BG에 있거나 WebView가 보이지 않는 경우
pauseTimers()를 호출해야 WebView는 비활성 상태가 됨
-개별 WebView를 포함하는 Activity나 Fragment에서 제
어가 가능합니다(예제코드)
-개별 WebView에서 제어하지 않고 앱의 Active/Dormant
를 체크하고 여기에서 제어하는 것도 가능합니다.
boolean mIsTimerPaused = true;
void onResume() {
if (mIsTimerPaused == false) {
mWebView.resumeTimers();
mWebView.onResume();
mIsTimerPaused = false;
}
}
void onPause() {
if (mIsTimerPaused == true) {
mWebView.pauseTimers();
mWebView.onPause();
mIsTimerPaused = true;
}
}
void onDestroy() {
mWebView.destroy ();
}
19. 일반
19 / D2 개발자 세미나
동영상 재생
아래의 2가지는 하드웨어 가속이 설정되어 있어야만 정상 동작한다.
- 동영상 Poster 와 동영상 재생
- Flash 컨탠츠 재생
Manifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name="com.nhn.android.search.SearchApplication"
android:theme="@style/Theme.NoShadow" android:hardwareAccelerated="true"
android:largeHeap="true">
전체 기능을 사용하지 않는 제한적인 WebView 사용에서는 하드웨어 가속을 Off 가능하다.
사례.
- 웹 내의 동영상 이미지가 안보여요. 동영상 재생하는데 깨져요.
- 전체 화면이 앙되요 ㅠㅠ
20. 일반
20 / D2 개발자 세미나
동영상 재생 (2)
풀 스크린 동영상을 위해서는 onShowCustomView()와 onHideCustomView()을 구현한다.
onShowCustomView() 에서는 표시할 동영상 View를 인자로 전달 -> 적절한 Layout에 넣는다.
종료시 CustomViewCallback. .onCustomViewHidden() 호출 필요
21. 일반
21 / D2 개발자 세미나
클링 링크 처리(1)
shouldOverrideLoadingUrl(String url)
• a tag, window.location,, window.redirect, window.open 등 웹에서새 URL로 페이지를 로딩하
고자 할 때 호출되는 Callback 함수.
• http가 아닌 uri Scheme에 대한 처리도 여기에서 해야 한다.
• 꼭 해야 하는것
• Well-Know URI, martket, intent , tel, sms, mms, mailto, ftp, 맞는 Intent Action과
return true; url 로드 않고 완료
return false; 동일한 창에 url 로
return super.shouldOverrideLoadingUrl() 새로운 브라우저를 열어 로딩
사례.
- 마켓으로 이동을 안해요? 전화 번호 링크도 안 되는데요?
- 로그인 링크가 들어오면 웹에서 처리하지 않고, 앱에서 처리(앱 로그인 창) 하고 싶어요?
22. 일반
22 / D2 개발자 세미나
클링 링크 처리(2)
웹뷰에서 로드하지 못하는 uri는
Intent호출
구글 play store URL은 google play앱을 띄워 주도록 예외처리
return false;
VS
loadUrl(); return true;
23. 일반
23 / D2 개발자 세미나
웹과 앱의 통신
WebSetting의 addJavaScriptInterface() 함수로 Web에서 호출할 수 있는 Custom Java Script 객체
추가
addJavaScriptInterface(Object object,String name) 의 형식이며, 웹에서는 window.name.함수이
름() 의 형태로 호출 할 수 있다.
앱에서 웹페이지 내의 함수를 호출할 때는 WebView. loadUrl(“javascript:jsfunc(1234) ”) ; 형태 호출
한다.
사례
- 웹에서 단말의 주소록을 가져오고 싶는데 가능하한가요??
- 웹에서 링크를 클릭하면 앱에서 사진을 찍어서 사진 서버로 올리고, 결과를 웹으로 알려줄 수 없나요?
24. 일반
24 / D2 개발자 세미나
웹에서 앱 설치 여부 체크 - Web-App Communication
public class JavaScriptFeature {
Context mContext;
public JavaScriptFeature(Context context) {
mContext = context;
}
@JavascriptInterface
public boolean isPkgInstalled(String pkgName) {
try {
PackageInfo info = mContext.getPackageManager().getPackageInfo(pkgName, 0);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
}
사례
- 웹에서 앱 설치 여부를 알고 싶어요?
Call Script(HTML)
boolean isIstalled = window.android.isPkgIstalled("com.kakao.kakaotalk");
Inject Inteface(App)
mWebView.addJavaScriptInterace(new JavaScrtiptFeature(getActivity()),"android");
26. 일반
26 / D2 개발자 세미나
Web-App Communication – Code Example(주소록 pickUp)
Web
Page
WebView Android
System
widow,android.pickContact()
startActivity
Contact List
onActivityResult()
mWebView.loadUrl(“javascript:onPickupContact”)
getPickedContact()
27. 일반
27 / D2 개발자 세미나
Web-App Communication – Code Example(주소록 pickUp)
29. 일반
29 / D2 개발자 세미나
웹-앱 인터페이스-파일 첨부(2)
파일첨부 그림 WebChromeClient 의 void openFileChooser()를 Override한다.
해당 함수는 @Hide이므로 그냥 보이지는 않습니다. OS 버전에 따라 다른 함수가 불리게 되므로 3개의 함수를 모두 구현
30. 일반
30 / D2 개발자 세미나
앱시작시 크래시 - OS 2.3 이하에서 SQLiteException 발생 문제
WebView 내에서 사용하는 DB 접근에 문제가 발생하는 경우가 많음.
웹뷰를 생성하기 전에 validateWebView()로 DB 확인
NO_CACHE 와 AppCache 미 사용. 예제와 같이 DB 에 대한 확인 절차가 버그 처리에 도움이 됨.
32. 일반
32 / D2 개발자 세미나
Web에서 웹 페이지 디버깅
KITKAT의 Chrome Debugging 기능
WebView. setWebContentsDebuggingEnabled (true)을 설정하면 크롬브라우저와 연결하여 페이지의 로딩 쿠키, DOM
Storage등 페이지 관련 정보를 모두 볼 수 있다.
WebViewClient.onConsoleMessage()
웹페이지에서 스크립트 에러 발생시에 Callback
AddJavaScriptInterface를 이용한 방법
- DOM 객체에 HTML Script를 복사한다.
- onPageFinished에서 mWebView.loadUrl(SCRIPT_GETTING_HTML); 호출
33. 일반
33 / D2 개발자 세미나
ADB Plugin을 통한 디버깅(KK)
1. 웹뷰에 setWebContentsDebuggingEnabled(true);
2. PC 의 Chrome Web Browser에 ADB Plugin 추가
3, Device 연결(usb 디버깅 설정됨)
34. 일반
34 / D2 개발자 세미나
2.3 KIKAT and Chromium WebView
KIKAT에서는 기존의 Webkit이 아니라 Chromium WebView로 WebView
Core를 변경
Multi-Process 지원이 가능하며
HTML5 의 WebAudio, WebGL 등 대부분의 기능을 지원
BUT
-안정성에 문제 발생
-기존의 기능이 지원되지 않는 문제
- 수많은 버그들
35. 일반
35 / D2 개발자 세미나
KITKAT WebView ISSUES and Workaround
문제 설명 4.4.2 4.4.3 4.4.4 L 우회방법
Child Webview
addJavaScript
shouldOverrideLoadi
ng
setUserAgent
window.open 또는 target 형태로
띄워진 child webview상에서
shouldOverridedLoading callback
이 동작을 하지 않아
여러 scheme 등 앱단에서 처리 루틴
을 타지 못함.
X X X X 처리방법 없음.
setUserAgent는loadUrl()호출후 적
용됨
Webview canvas
crash
js alert dialog Crash
content가 많은 page에서 webview
canvas lock발생되는 현상
X X X X webview detach 수행으로 일부 크
래시 회피
File Upload webview 상에서 file upload지원 기
능이 사라짐.
X O O O 지원안될 경우, 앱단에서 photo
upload service를 통하여 지원
Flash지원 webview상에서 Flash 지원 X X X X 처리방법 없음.
Webview scroll webview상에서 page scroll 시도시
최하단까지 scroll되지 않는 case 발
생
X X O O issue발생되는 case에선, page의
scale값이 1 미만인지 확인후 1미만
이 되지 않도록 웹page 설정
chrome 33이상 버전부터 이슈해결
된 것으로 보임.
A tag 동영상 Player
Picker
동영상 링크 선택시 player선택창이
뜨지 않고
slide 창이 발생되면서 내부 play로
재생
X X X X mimeType을 확인하여 video인 경
우에 startActivity 시켜줌