반응형
Flutter로 앱 개발하면서 만났던 이슈들
Android, iOS 2023. 8. 8. 16:04

웹뷰를 감싸는 Flutter 앱을 만들면서 여러가지 이슈를 겪었다. 기억에 남는 이슈를 여기에 (두서없이ㅎ) 남겨보겠다. 참고로 나의 상황은 아래와 같다. 크로스 플랫폼으로 앱을 개발해보는 것은 처음이었다. 안드로이드 개발만 했던 나에게는 다른 진영의 개발은 상당히 생소했다. 물론 Xcode도 처음 사용해보았다. 뿐만아니라 iOS 개발 및 배포와 관련된 경험이 모두 처음이었다. Flutter를 다루는 것도 처음이었다 Xcode 빌드 Fail이 될 때 Flutter로 개발하더라도 안드로이드와 iOS는 개별로 빌드를 해야한다. iOS는 Xcode로 빌드를 했는데... 처음부터 잘 될리가 없다. 안드로이드의 clean and build와 같은 방법이 있을 것으로 예상했고 예상대로 그런 방법이 있었다. 빌드 혹..

JavaScript는 모르지만 WebView에서 사용하고 싶어!!
Android, iOS 2019. 11. 28. 15:05

마아아아아아아아아아아안약에, 만약에 웹뷰의 특정 이벤트를 네이티브에서 받아서 메시지를 보여주고 싶다면 어떻게 해야할까? 여러 방법이 있겠지만 JavaScript 함수를 호출하는 방법을 써보고자 했다. 동작이 되는 웹서비스를 만들 수 없으니 로컬에 HTML 파일을 두고 테스트할 수 있도록 샘플앱을 만들었다. (착하지?) 내 Github에서 모든 코드를 확인할 수 있다. (정말 착하지?) var handler = Handler() inner class AndroidBridge { @JavascriptInterface fun sendData(msg: String) { handler.post(Runnable { var message = msg if (message.isEmpty()) { message = "입력..

ViewPager 안에 수평 스와이핑 View가 또 있다면?
Android, iOS 2019. 11. 25. 19:58

수직 스크롤 안에 수직 스크롤 되는 뷰가 또 있다면 꽤 피곤하다. 보통 이럴 때 사용하는 것이 nestedscrollview이다. 이런건 수직 스크롤에서 발생하는 이슈. 그렇다면 수평인 경우에도 이렇게 골치 아픈 일이 있지 않을까? 문제는 다음과 같다. MainActivity 내부에 ViewPager가 있다. ViewPager의 스와이프 기능은 오버라이드된 canScroll()에서 막았다. ViewPager에는 여러개의 Fragment가 동적으로 붙는다. Fragment 중 일부는 WebContainer로 구성되어 있고 이 WebContainer는 WebView를 갖는다. WebView에는 수평 스크롤 View를 가질 수 있다. Fragment 중 일부는 완전한 네이티브로 구성되어 있고 수평형 Recyc..

WebView size 문제로 빡칠 때
Android, iOS 2018. 6. 8. 18:00

Webview를 잘 달아놓고 아래처럼 화면이 모바일에 최적화 되어 있지 않다면 상당히 빡친다.(!!!!)게다가 WebView에 사이즈를 알아서 맞추지도 않고줌도 안된다면 두배로 빡친다. 당신의 코드가 고양이가 아니라면 해야할 것이 있다.바로 WebSettings 선언과 ViewPort 설정이다. 12345678910WebSettings webSettings = mWebView.getSettings();webSettings.setJavaScriptEnabled(true); // 화면 비율webSettings.setUseWideViewPort(true); // wide viewport를 사용하도록 설정webSettings.setLoadWithOverviewMode(true); // 컨텐츠가 웹뷰보다 클 경우..

Intent로도 data를 넘기기 어려울 땐? ResultReceiver
Android, iOS 2018. 3. 28. 18:43

곤란한 상황을 마주하였다.상황은 다음과 같다 TestService.java에서 TestWebviewActivity로 data를 전달한다.전달 받은 값을 parameter 삼아서 webview를 연다.Web에서 JavascriptInterface를 호출, webview에서 web의 javascript를 호출한다.javascript에서 필요한 값을 다시 TestService.java에 전달한다. 여기서 startActivityForResult()를 쓸 수 없다.intent를 사용하는 곳이 Activity가 아닌 service이기 때문이다.이 때 사용한 것이 다름아닌 ResultReceiver이다. Activity와 Service 간 통신할 때 자주 사용한다.객체를 전달하면서 callback을 같이 받고 싶을..

728x90
반응형