-
[Flutter] iOS 17부터 InAppWebView 웹 디버깅이 되지 않아요Flutter 2024. 4. 8. 01:43반응형
오늘은 조금 짧막한 글이 될 것 같네요. 특별한 기술적인 내용이라기보다 겪었던 이슈에 대한 정리여서, 슈욱하고 끝날 것 같습니다.
발단의 배경
Flutter에는 내부 라이브러리인 flutter_webview와 함께 많이 사용하는 InAppWebView라는 라이브러리가 존재합니다. 비록 Flutter 유저가 만든 비공식 라이브러리지만 퀄리티만큼은 flutter_webview에 버금가기 때문에 많이 사용하는 라이브러리입니다.
InAppWebView를 사용하던 도중, 어느 순간부터 iOS - Safari로 웹 디버깅을 하려고 하면 InAppWebView가 잡히지 않는 문제가 있었습니다. 최신 버전으로 올리지 못하는 사정 때문에 최신 업데이트 버전에서는 확인하지 못했지만, 일단은 iOS 버전을 업데이트를 한 이후부터 그런 것 같습니다.
혹시 같은 현상을 겪은 사람들이 있나 싶어서 가벼운 마음으로 찾아보기로 했습니다. iOS 버전 문제라면 분명 저보다 기술적으로 민감하신 분들이 이슈를 제기했을 것이라는 생각에서 말이죠. 혹시나 해서 찾아보니까 역시나 였습니다. 심지어 해당 링크로 들어가보면 아예 해결법으로 예상되는 코드도 함께 올려주셨습니다!
WKWebView* wkWebView = [[WKWebView alloc] initWithFrame:self.engineWebView.frame configuration:configuration]; wkWebView.UIDelegate = self.uiDelegate; if (@available(iOS 16.4, *)) { BOOL allowWebviewInspectionDefault = YES; wkWebView.inspectable = [settings cordovaBoolSettingForKey:@"InspectableWebview" defaultValue:allowWebviewInspectionDefault]; }
그런데 위의 코드는 iOS native WebView를 사용할 때 얘기고, 저같은 경우엔 Flutter의 InAppWebView를 사용하는 상황이니 결국 라이브러리 자체를 고쳐야 했습니다. 그럼 어디가 가장 적당한 위치일까요?
반응형해결 방법
위의 코드로 유추해보건대 wkWebView의 inspectable이라는 속성을 사용하였고, 그렇다면 InAppWebView에서 iOS 웹뷰 객체를 생성하는 부분을 찾아야겠네요. 아래의 파일인 InAppWebView.swift입니다.
혹시나 했지만 역시 최신 버전에는 이미 적용이 되어있네요. 아마 파라미터로 해당 속성에 대한 사용 여부 또한 결정할 수 있을 것으로 예상됩니다. 하지만 저는 최신 버전으로 올리지 못하는 상황이기 때문에, 적당한 위치를 찾아서 적용할 수 밖에 없겠네요.
if #available(iOS 16.4, *) { self.isInspectable = true }
InAppWebView 버전에 따라 작성 위치는 다르겠지만 WkWebView를 생성하는 적절한 위치를 찾으면 될 것 같습니다. 알고보니 16.4부터 발생했던 버그였네요. 아무것도 모르고 17로 올렸다가 언제부터 발생하는 이슈인지 알 수 없었습니다. 생각보다 별 문제는 아니었지만, 저 별 것 아닌 것 때문에 불편함을 겪을 순 없으니까, 빨리 해결해 주었습니다.
반응형'Flutter' 카테고리의 다른 글
[Flutter] Flutter에서 다양한 스크롤뷰 사용하기 (0) 2024.05.25 [Flutter] Flutter에서 Clean Architecture 구조 설계하기 (feat. get_it) (0) 2024.05.14 [Flutter] Flutter의 onStart, onStop, onResume, onPause (0) 2024.04.01 [Flutter] Android 14 - WebView가 하얗게 나온다? (2) 2024.03.31