네이티브/Android

    Android webview에서 javascript로 함수 호출하기 ℡

    Android webview에서 javascript로 함수 호출하기 ℡

    Android에서 WebView의 용도는 무엇인가요? WebView는 어플리케이션 내부에 웹 페이지를 보여주는 view 입니다. 안드로이드 에서는 'Acitivity 내부에서 웹 브라우저나 온라인 컨텐츠를 보여주기 위한 기반이 되는 클래스'라고 설명이 되어있습니다. 웹 페이지를 보여주기 위해 웹킷 렌더링 엔진을 사용하고 history를 통한 앞으로 가기 뒤로가기 메소들르 포함하고, zoom in,out, text 찾기외 다양한 것을 포함하고 있습니다. 어플리케이션에 Webview를 추가하기 위해서는 xml Layout file에 요소를 추가하여야 합니다. WebChromeClient를 통해 chrome 핸들러를 추가할 수 있습니다. alert, preload, confirm등의 표시와 액션을 제어할 수 ..

    Android splash image 띄우기  (Renewal)

    Android splash image 띄우기 (Renewal)

    2022.03.01 - [네이티브/IOS] - ios splash image 띄우기 에 스플래시 이미지에 대한 간략한 설명이 있습니다. 먼저 읽으신다면 어떠한 이유에서 사용하는지 간략히 알수 있을 것입니다. ios splash image 띄우기 앱이 시작될때 스플래시 이미지를 노출시킬수 있습니다. 스플래시 이미지를 사용하는 이유는 다양할 것입니다. 1. 앱이 켜지자 마자 스플래시 이미지가 노출되므로 반응이 빠르다라는 느낌을 dkrnfls.tistory.com Android의 기능을 이용하여 splash image를 띄워보겠습니다. splash image를 띄우는 법은 다양하게 있을수 있습니다. 여기서 소개하는 방식은 그중 하나 입니다. 1. Splash Activity 생성 2. 앱 실행시 실행되는 in..

    Android 웹뷰 alert, confirm 띄우기

    Android 웹뷰 alert, confirm 띄우기

    안드로이드 웹뷰 에서는 alert 와 confirm을 따로 커스텀 하지 않아도 띄워주긴 합니다. 아래의 내용은 좀 더 입맛에 맞게 브라우저에서 alert와 confirm을 띄워줄 때 액션을 다루기 위한 내용 입니다. WebView webview; WebChromeClient webClient = new WebChromeClient() { // 여기에서 메서드들을 override 해주면 됩니다 } webview.setWebChromeClient(webClient); 은 WebChromeClient의 객체를 생성해주는 부분인데 이 클래스 안에 정말 많은 기능들이 숨어있습니다. (제가 봤을때는 19개의 메소드가 있었고 alert, confirm, prompt, geolocation 승인 등등 다양한 내용이 있..

    Android 웹뷰 쿠키 native에서 세팅

    Android 웹뷰 쿠키 native에서 세팅

    프로젝트를 진행하던 중 앱의 설치된 버전을 웹뷰에서 판단하여 다른 화면을 렌더링 해줘야 하는 경우가 있었습니다. 설치된 앱의 버전은 네이티브에서만 접근할 수 있어 이것을 get하여 웹뷰의 쿠키에 값을 넣어주었습니다. 아래의 내용은 안드로이드에서 웹뷰에 쿠키를 추가해주고자 하는 내용입니다. 1. 설치된 앱 버전 가져오기 * 설치된 앱 버전은 아래의 예시 코드에는 나오지 않습니다. PackageInfo pInfo; // onCreate 안에 추가 try { pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } 2. ..

    Android 웹뷰 디버깅

    Android 웹뷰 디버깅

    안드로이드 디버깅은 간단하면서도 체크해야할게 많습니다. 휴대폰에서 체크해야 할 내용 시스템 > 개발자 옵션에서 usb 디버깅을 활성화 해줍니다. (개발자 설정이 되어있지 않으면 시스템 > 휴대전화 정보 > 빌드번호를 10번 정도 눌러줍니다.) 코드 추가해주어할 내용 아래의 코드 내용을 MainActivity의 Oncreate안에 추가해줍니다. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } 크롬 접속 주소창에 chrome://inspect 검색후 휴대폰이 나오면 inspect를 클릭해줍니다. 아래 이미지처럼 inspector가 나온것을 볼수 있습니다 * secre..

    안드로이드 UGC 심사 거절

    안드로이드 UGC 심사 거절

    안드로이드 앱 출시 심사 과정이 빡세졌습니다. (예전엔 웹뷰에 Url 잘못 넣어도 업데이트 해주었는데..... 요게 비정상 이었죠 ㅎㅎㅎ) 제가 겪은 상황은 커뮤니티 에서는 글쓴이를 신고하고 차단할 수 있어야 합니다. 댓글 에서도 글쓴이를 신고하고 차단할 수 있어야 합니다. 앱 테스터 분들이 차단 동작 후에 실제로 차단 되었는지 안되었는지 확인후에 안되었으면 스크린샷으로 내용 보내줍니다. 저는 커뮤니티의 글이 두 종류(공지, 유저들의 글)가 있었습니다. 공지를 차단했을때 계속 노출이 되고 있어서 몇번 심사 거절을 받은적이 있었습니다. 모두 한번씩 확인 더 해서 심사 거절로 스트레스 받는 일 없도록 합시다!

    Android Uri.getQueryParameter에  + 들어가면 빈칸으로 바뀝니다.

    Android Uri.getQueryParameter에 + 들어가면 빈칸으로 바뀝니다.

    최근에 다이나믹링크를 구현하던중 정보를 링크에 query로 담았을때 +가 빈칸으로 변경되는 이슈가 있었습니다. 같은 다이나믹 링크를 공유했을때 ios에서는 이슈가 없어서 안드로이드 쪽의 이슈로 생각하고 접근하였습니다. 첫번째 사진은 예시를 나타낸 것이고 두번째 사진은 getQueryParameter로 가져왔을때 +가 빈칸으로 변경되어 나타나는 모습입니다. getQueryParameter가 의심이 됩니다. 한번 코드를 살펴봅시다 return 값이 뭔가 수상하네요. convertPlus 파라미터도 있고 한번 더 들어가 봅시다 appendDecoded가 builder의 값을 변경해주는것 같습니다. appendDecoded를 찾아가 봅시다 범인을 찾았습니다!!! 이전에 convertPlus 옵션이 true로 되..

    Android build.gradle 주요 정보 보안

    buid.gradle 파일은 gitignore에 추가되어 있지 않습니다. git 저장소가 노출되면 빌드에 필요한 password나 키들에 대한 정보가 노출될 수 있습니다. 이는 곧 스토어에 올라가 있는 앱이 다른 앱으로 대체될 수 있다는 이야기 입니다. gradle 은 groovy 언어로 이루어진 빌드 도구 입니다. groovy언어와 local.properties 파일을 이용하여 이를 변경합니다. 변경 전 (key 값들은 임의의 값으로 대체 하겠습니다.) ... signingConfigs { debugConfig { storeFile file('../test.jks') storePassword 'test123' keyAlias 'test' keyPassword 'test123' } releaseConfi..

    Android html5 Geolocation 웹뷰 적용

    Android html5 Geolocation 웹뷰 적용

    웹 api중 geolocation api가 있습니다. http에서는 사용이 불가능하고 https에서만 사용이 가능합니다. 따라서 테스트 할때도 ngrok으로 세팅을 하는등 별도의 툴을 이용해야 합니다. ngrok으로 로컬서버를 개방 하는법은 따로 포스팅 할 수 있도록 할게요 아래 첨부 링크는 웹에서 geolocation 에 관한 링크 입니다 https://developer.mozilla.org/ko/docs/Web/API/Geolocation_API/Using_the_Geolocation_API Geolocation API 사용하기 - Web API | MDN Geolocation API는 navigator.geolocation 객체를 통해 사용할 수 있습니다. developer.mozilla.org 웹..

    Android 화면 Resizing with windowSoftInputMode

    webview 화면 resizing 웹뷰에서 키보드가 하단에서 올라오게 되면 위의 화면은 키보드로 가려져서 화면이 줄어듭니다. 이때 화면을 스크롤 하거나 줄이거나, 줄여지지 않는 방법을 알아보겠습니다. // AndroidManifest.xml windowSoftInputMode에서 옵션을 주어서 제어할 수 있습니다. stateOption과 adjustOption을 하나씩 사용하거나 둘중 하나만 사용합니다. 두 그룹중 어느 하나의 그룹을 복수개 사용하면 정의되지 않은 결과를 가져올 수 있습니다. example 사용하는 알맞은 예시입니다 android:windowSoftInputMode="adjustResize|stateVisible" 아래의 코드는 정의되지 않은 결과를 가져올 수 있습니다 android:w..