앱에서 웹뷰를 연동 하면 shouldOverrideUrlLoading 가 필요 할때가 많은데 동작 하지 않는 경우
- 하이브리드? 앱을 개발 하다 보면 shouldOverrideUrlLoading 필요한 경우가 많습니다
- 현재 개발 중인 앱은 거의 네이티브라고 생각해도 될만큼의 비중이었지만 최근 들어 웹이 추가 되는 경우가 있습니다
- 최긘에 url 에 따라서 이벤트 처리를 하려고 하니 shouldOverrideUrlLoading 첫 진입 이외에는 동작 하지 않고 있었습니다.
- 잘못 추가 되거나 deprecated 된 shouldOverrideUrlLoading 사용등의 문제는 아닙니다.
- 잘못 사용한 경우에 대한 내용은 아닙니다.
- 그래서 업데이트 되어서 그런가 해서 네이버나 구글등의 사이트에서는 정상 동작 하는걸 확인 했습니다.
- 로그를 찌고 이것 저것 확인 했지만 원인을 파악하지 못하고 있었습니다.
- 그래서 웹 개발자 분과 대화를 하다가 원인을 찾았습니다.
- SPA(Sigle Page Applications) 형태로 개발을 진행 하고 있었습니다.
- 저는 위 기술을 몰라서 앞으로 가기 뒤로가기 등 모든게 잘 동작 해서 페이지 이동이라고 생각하고 있었습니다.
- 결론은 동일한 페이지에서 렌더링이 바뀌는 거라 shouldOverrideUrlLoading 는 동작 안하는게 맞았습니다.
- 그러면 어떻게 처리 해야 할지 고민을 잠시 했습니다.
- SPA 하려면 필수 처리가 history api 를 이요해서 앞으로, 뒤로 가기가 정상 동작 하도록 해줘야 한다는걸 착안해서 처리 했습니다.
-
안드로이드의 경우 아래와 같이 히스토리가 변경 될때 발생하는 콜백이 있어서 해결 하였습니다.
override fun doUpdateVisitedHistory(view: WebView?, url: String?, isReload: Boolean) {
- 이건 회사 마다 다르니 웹 개발자와 잘 이야기 해서 작업 하면 좋습니다.
결론
- 다른 플랫폼 개발자 들과의 대화는 꼭 필요합니다.
- 항상 대화하고 협업은 필수 입니다.