안드로이드 앱 개발기 #36 - 하이브리드 앱 만들면서 웹뷰 관련 구현해야 할 것들
최근 개발 진행 중인 앱은 하이브리드 앱이구요. 웹페이지는 다른 개발팀에서 만들고 있습니다. 모바일부서에서는 이를 보여줄 웹뷰를 메인으로 하고 필요한 사항들을 지원하는 앱을 만들고 있습니다. 처음에는 쉬운 작업이 될 거라고 생각했는데요. 막상 후반으로 가니 추가로 작업해야 할 것들이 있네요. 구현이 어려운 것은 아니지만, 이와 관련된 명쾌한 자료들이 없어서 그것만 참고해서 만드는 것이 맞는지 의문이 들 때가 있습니다. 일단 이들을 참고해서 만들구요. 테스트를 많이 해보며 수정하는 것이 좋지 않을까 합니다.
웹뷰 관련 추가로 구현해야 할 사항들
- 파일 업로드
- 파일 다운로드
- 일부 URL 오버라이딩
브라우저에서 별 생각없이 하는 업로딩, 다운로딩이 안드로이드 웹뷰에서는 바로 지원되는 것이 아니네요. 이것은 추가로 구현해줘야 합니다. 이들이 바로 최근에 작업하고 있는 것들이구요. 이번 앱에서는 아직 적용하지는 않았지만, 일부 웹 URL들은 오버라이딩을 해야 하는 경우도 있습니다.
URL 오버라이딩
WebView 뷰에 설정해야 할 객체들이 여러 종류가 있는데요. 그 중 하나는 WebViewClient 또는 이를 상속받는 객체입니다. WebViewClient 클래스의 shouldOverrideUrlLoading 메소드를 오버라이드 하고 필요한 작업을 구현하면 되겠습니다.
public boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
이 메소드를 오버라이딩할 때 주의해야 할 점은요. 오버라이딩 해야 할 URL이 늘어나면, 소스 코드가 복잡해질 수 있다는 점입니다. 이 메소드의 작성, 수정은 최소한으로 하는 것이 좋습니다.
이외에 보다 자세한 내용들은 '안드로이드 개발 팁'에서 이어갈 예정입니다.
지난 안드로이드 앱 개발기
- #35 - 코루틴 학습하면서 추가로 알아야 하는 것들
- #34 - 맥북에어로 안드로이드 앱 개발은 무리인가...?
- #33 - build.gradle.kts 파일 수정 후 발생한 빌드 오류 AAPT: error: resource android:attr/lStar not found
- #32 - 가독성 증진을 위한 확장 함수 사용
- #31 - RxJava2 사용하며 만난 NullPointerException: The mapper function returned a null value.
- #30 - 나이트 모드를 고려하지 않아 메인 화면 시작시 발생한 IllegalStateException
- #29 - 잊고 있었던 앱 재시작 샘플 코드
- #28 - 문자열 리소스 파일 strings.xml 어떻게 작성하면 좋을까?
- #27 - 클린 아키텍처에서 domain 모듈
- #26 - 클린 아키텍처 구현을 위한 모듈 구성
- #25 - 스팀 관련 샘플 코드 만들면서 잘못한 점
- #24 - 시작 화면 구성 요소 식별하기
- #23 - 프로젝트 초기 화면 구성부터 대략적으로...
- #22 - Kotlin 코드로 JavaScript 코드를 실행할 수 있을까?
- #21 - 실습 도중 발생한 오류: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
- #20 - 클립보드에 텍스트 복사하는 함수 만들어 보기 (Kotlin)
- #19 - 데이터 바인딩 적용했으나 UI 자동 업데이트 되지 않는 문제
- #18 - 에뮬레이터에서 토스트 안 보이는 문제 (1)
- #17 - 유닛 테스트를 실행할 수 없는 문제 해결
- #16 - 잘 되던 유닛 테스트를 실행할 수 없는 문제
- #15 - 앱 재시작 코드
- #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제
- #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)
- #12 - Glide 활용하여 이미지 다운로드 받는 코드
- #11 - 처리할 수 없는 예외/크래쉬 발생시 앱 재시작하기
- #10 - 안드로이드 스튜디오 업그레이드 후 단축키가 안되면? (맥북)
- #9 - LiveData 객체에 동일 데이터 설정하면 observer 실행되는지 확인 목적의 샘플 프로젝트
- #8 - 안드로이드 스튜디오에서 빌드시 발생하는 Build Tools revision 31.0.0 오류
- #7 - 'UGC(사용자 생성 콘텐츠) 정책 미준수'로 심사 거절
- #6 - 뷰에 역마진 적용 불가시 translationX, translationY 속성 사용하기
- #5 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #4 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #3 - 무한 롤링 배너 만드는 법을 찾았으나, 높이를 wrap_content로 지정이 안 먹히는 문제점이...
- #2 - setContentView 메소드의 파라메터를 변경하지 않아서 발생한 화면 오류
- #1 - 페이스북 로그인 연동시 발생했던 문제들
Posted through the AVLE Dapp (https://avle.io)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.