HybridApp

HybridApp/Cordova

[하이브리드앱] Cordova 환경에서 LocalStorage가 초기화 되는 현상

UIWebview 환경에서 발생할 수 있는 앱 크래쉬 / LocalStorage 초기화 현상 얼마 전 제가 Cordova / UIWebview 로 3년전쯤 앱 프로젝트를 진행했던 곳에서 아이폰에서만 간헐적으로 종료 / LocalStorage가 초기화되는 현상이 있다는것을 알았습니다. 최초 작업당시만 해도 발생하지 않았던 문제이고 작년 IOS 12 업데이트 이후 그 현상의 매우 잦아졌다고 하니 OS상의 이슈로 예상했고 이 사이트뿐만 아니라 다른 사이트에서도 겪고있을 문제라 판단되어 포스팅 해봅니다. 원인은 아이폰 메모리 관리 정책에 있습니다. 사파리 등 앱을 쓰시다가 앱이 간헐적으로 강제종료 되는 현상을 겪어보신적이 있으실텐데요. Webview 내 LocalStorage는 IOS에서 out of memor..

HybridApp/기타

[하이브리드앱] 안드로이드 웹뷰에서 쿠키 증발 현상

안드로이드 웹뷰에서의 쿠키 증발 현상 안드로이드로 하이브리드앱 구성시 쿠키가 증발해버리는 현상이 있습니다. 발견된 현상으로는 앱 강제종료시 웹뷰내에 저장된 쿠키가 증발해버리는 현상입니다. 해결방법으로는 앱의 생명주기에 쿠키 싱크동기화를 해주어 원하는 시점에 쿠키를 저장해주는 방법입니다. @Override protected void onResume() { super.onResume(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //noinspection deprecation CookieSyncManager.getInstance().startSync(); } } @Override protected void onPause() { super.on..

HybridApp

[하이브리드앱] 하이브리드앱 유틸리티 JS

hybridUtilJS - 하이브리드앱(웹앱) 유틸리티 자바스크립트하이브리드앱 운용시 운영체제 구분 등 유틸객체Examplewindow.webAppUtil.isAndroid(); window.webAppUtil.isIos();기능들함수파라미터리턴타입설명isAndroidboolean안드로이드 체크isIosbooleanIOS 체크getAndroidWebviewMajorVersioninteger안드로이드 웹뷰 메이저버전 확인getIphoneWebviewMajorVersionintegerIOS 웹뷰 메이저버전 확인isNativeboolean앱을 통한 접속인지 확인getWebviewVersionintegerOS구분없이 웹뷰 메이저버전 가져오기getGooglePlayStoreUrlappPackageName(Stri..

HybridApp/Cordova

[하이브리드앱] cordova-plugin-whitelist 분석

WhiteList ? Cordova App에서 Navigation(화면이동), Intent(scheme 호출), network Request(image, XHR, 등) 의 권한정책을 설정하는 플러그인 입니다. 하이브리드앱 이라는건 애초에 화면에 대한 리소스를 App 내부 Assets 에서 가지고 있는 상태에서 이 리소스를 사용하여 앱을 구성하는 것 입니다. 허나 데이터를 불러오는 ajax, 앱을 호출하는 intent, webview내에서의 화면이동 등을 이용하여 좀 더 유연하게 하이브리드앱 / 웹앱을 구현할 수 있도록 플러그인 형태로 제공하는 것 입니다. 기본값으로는 외부 Navigation이 막혀있기 때문에 webview 내부에서 외부 http / https로의 주소이동 시 웹뷰내에서의 이동이 아닌 외..

HybridApp/기타

[하이브리드앱] 링크를 웹뷰가 아닌 새로운 브라우저에서 열기

하이브리드앱을 구현하다보면 현재 웹뷰가 아닌 새로운 브라우저에서 URL을 보여줘야하는 경우가 생깁니다. 하이브리드 플랫폼 및 개발환경에 따라 javascript 에서 호출하는 방법이 상이하므로 네이티브쪽 소스만 공유합니다. Androidpublic void openExternalBrowser(String url){Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);} IOS -(void)openExternalBrowser:(NSString*) url{[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];} [출처] webview를 수정..

HybridApp/Cordova

[하이브리드앱] cordova 에서 userAgent에 문자열 추가하기

하이브리드 앱 프레임워크인 코르도바에서는 설정 및 플러그인 추가를 config.xml 이라는 파일을 통해서 수정 / 추가 하도록 되어있는데요. 이번에는 cordova 에서 웹/앱 체크를 위한 userAgent 문자열 추가를 해보도록 하겠습니다. 코르도바 폴더구조에서 config.xml 을 열어보시면 부터해서 코르도바 앱의 설정 및 플러그인을 추가하는 문구가 보일텐데요. 아래와 같이 android 와 IOS에 userAgent에 문자열을 추가할 수 있습니다. 위와같이 config.xml 에 userAgent 의 값을 추가해주는 설정을 넣어주시면 userAgent 에 Cordova 라는 문자열이 추가됩니다.

HybridApp/기타

[하이브리드앱] userAgent를 이용해서 웹 / 앱 접속 구분하기

지난번에 userAgent를 통해 접속자의 Android / iPhone 구분을 알려드렸는데 이번에는 userAgent를 이용해 웹 접속과 앱접속을 구분하 는 방법을 알려드리겠습니다. Android 와 IOS 모두 Native소스에서 userAgent의 값을 넣을 수 있습니다. 이 소스를 이용해서 자바스크립트에서 웹 과 앱 접속 구분하기를 해보겠습니다. 다음 예제는 앱을 통한 접속상태일때 userAgent 에 "inApp" 이라는 문자열을 추가해서 구분해보도록 하겠습니다. AndroidwebView.getSettings().setUserAgentString(webView.getSettings().getUserAgentString + " inApp"); IOSNSString *originUserAgent ..

HybridApp/기타

[하이브리드앱] Android, IOS 구분하기

하이브리드앱 / 웹앱을 구성하면서 가장 기본적이면서 많이들 궁금해 하시는 Android/ IOS 구분하는 방법입니다. 자바스크립트에서 User-Agent 라는 정보는 접속자의 브라우저 정보 및 디바이스정보를 가지고있는 객체입니다. 이 User-Agent를 이용해서 Android, IOS를 구분할 수 있습니다. 다음은 Android, IOS 각 기기에서의 UserAgent 입니다. iPhone "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1" Android"Mozilla/5.0 (Linux; Android 5.0..

heeman
'HybridApp' 카테고리의 글 목록