하이브리드 앱 개발하면서 느낀 것 – 웹이랑 같을 거라고 생각하면 큰 착각이다
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
하이브리드 앱을 처음 만들 때 나는 단순하게 생각했다.
웹사이트 잘 만들어 놨으니까 WebView에 URL만 올리면 끝이라고.
하지만 실제로 개발을 시작해 보니
웹 브라우저와 WebView는 완전히 다른 환경이었다.
겉으로는 똑같이 보이는데, 동작 방식이 미묘하게 다르다.
이 미묘한 차이 때문에 예상 못한 문제들이 계속 발생한다.
1. fixed가 WebView에서 다르게 동작하는 문제
웹에서는 하단 고정 버튼을 만들 때 position: fixed를 사용하면 끝이다.
하지만 WebView에서는 부모 요소의 구조에 따라 fixed가 깨지는 경우가 많다.
특히 상위 요소에 transform이 들어가면
fixed가 화면 기준이 아니라 부모 기준으로 움직이기도 한다.
이걸 모르고 애니메이션 효과를 넣었다가
하단 고정 버튼이 같이 스크롤 되는 문제를 겪었다.
웹에서는 정상인데 앱에서만 깨지는 대표적인 사례다.
2. SafeArea 문제는 웹에서 테스트하면 절대 모른다
iOS에서 WebView를 사용할 때는 SafeArea를 항상 신경 써야 한다.
웹에서는 정상인데 앱에서는 상단 상태바를 덮어버리는 문제가 생긴다.
특히 로그인 화면을 거쳤다가 돌아오면
레이아웃이 깨지는 경우도 있다.
이건 CSS 문제가 아니라
iOS WebView 렌더링 문제라서 웹에서 아무리 수정해도 해결되지 않는다.
3. 스크롤 주체가 다르면 UI가 깨진다
웹에서는 body 스크롤이 기본이지만
하이브리드 앱에서는 특정 컨테이너가 스크롤을 담당하는 경우가 많다.
이때 하단 고정 버튼, floating 버튼, sticky 요소들이
예상과 다르게 동작한다.
그래서 하이브리드 앱에서는
“누가 스크롤을 담당하는지”를 먼저 정해야 한다.
4. 애니메이션도 함부로 넣으면 안 된다
웹에서 자연스럽게 보이던 페이지 슬라이드 효과가
앱에서는 fixed 요소를 깨뜨리기도 한다.
특히 transform을 사용하는 애니메이션은
하단 고정 UI에 영향을 줄 수 있다.
하이브리드 앱에서는
단순한 opacity나 margin 애니메이션이 더 안전하다.
결론
하이브리드 앱은 웹을 그대로 옮기는 작업이 아니다.
웹 + 네이티브 환경을 동시에 고려해야 한다.
웹에서 정상이라고 해서
앱에서도 정상일 거라고 생각하면 안 된다.
하이브리드 앱 개발은
작은 차이를 계속 잡아가는 과정이다.
이걸 이해하고 접근하면
개발 속도도 훨씬 빨라진다.
댓글
댓글 쓰기