Flutter

[Flutter] InAppWebView - useShouldInterceptRequest가 발생시킨 ANR

devyong 2024. 6. 21. 20:20

앱 배포 후 주기적인 모니터링간 최근 ANR이 증가한 것을 발견했다.

잠잠하던 그래프가 갑자기 급상승했다. (다행히 IOS앱은 해당 ANR은 관측되지 않았다.)

웹서버, API, 웹뷰 등 환경에서 배포당시와 변환 환경이 있는지를 확인했다.

해당 일자에 웹뷰페이지 내에 광고스크립트가 심어진 이슈가 있었으며, 그 이후로 해당 페이지에서 ANR이 실제로 1초간 발생했다.

다른 외부브라우저(크롬, 구글, 웨일)에서는 발생하지않고, 나의 앱에서만 ANR이 있었는데..

 

웹뷰 설정과 광고스크립트간의 충돌이 있었던 것 이다.

InAppWebViewSettings(
  useShouldInterceptRequest: true

 

useShouldInterceptRequest 옵션은 Android에서 작동하며 default는 false이다.

모든 네트워크 요청을 가로채며, 요청을 가로채서 URL, 헤더 등을 수정하거나, 요청을 차단할 수 있다.

 

useShouldInterceptRequest에 옵션값설정은 true이고 해당 콜백을 사용하지 않지만 충돌이 ANR을 불러왔다.

광고스크립트가 여러개라서 어느 스트립트가 문제였는지는 파악을 못했지만, userShouldInterceptRequest옵션은 사용하지않는다면

false둬야한다.

 

또한 문서나 구글링을 통해서도 useShouldInterceptRequest는 요청을 가로채는 강력한 기능이 있지만 신중히 사용해야하며

성능상의 이유로 비활성화하는것이 좋다고 한다.

 

어쨌든,, useShouldInterceptRequest는 false로 변경 후 스크립트를 주석해제해서 종결되었다.