주위에 플러터 영업?을 하다보면, 웹 뷰 지원이 약해서, js api를 사용할 수 없어서 같은 이유로 플러터 사용을 꺼리는 사람들을 많이 봅니다.
과연 지금 플러터 웹 뷰는 괜찮을까요?
카카오 맵 api를 사용하기 위해서 위 링크에 있는 설명대로 키를 발급받습니다.
flutter_inappwebview 는 androidx 가 필요하기 때문에
flutter create --androidx -i swift
명령을 이용해서 앱 프로젝트를 만들어야 합니다.
AndroidX 를 지원하지 않는 기존 앱에 적용하려면 AndroidX Migration 과정을 거쳐야 합니다.
또한 iOS 기본 언어로 swift를 지정해주어야 합니다. 최신 버전 플러터에서 설정을 건드리지 않으면 보통 기본값으로 swift로 됩니다.
최신 버전으로 의존성 추가 해줍니다.
xml에서
INTERNET 퍼미션 추가
build.gradle 에서
minSdkVersion 21 까지 올리기
(공식 문서에는 17 이상이면 관계 없다고 되어있지만 저는 21 이상을 추천합니다.)
다시
카카오 개발자 콘솔
로 가서
[내 어플리케이션] - [api를 사용할 어플리케이션] - [플랫폼]
으로 들어갑니다.
Web 사이트 도메인에 https://localhost:[port] 를 추가해줍니다.
여기서는 9723 를 사용하는데
적당한 포트
를 사용해주면 됩니다.
InAppLocalHostServer 클래스를 이용해서 로컬에서 호스팅하는 http 서버를 엽니다. port 는 위에서 지정한 port 에 맞게 넣어줍니다.
플러터에서는 iOS, Android 두 경우 모두 처리해주어야 합니다.
ATS
설정을 해주어야 합니다.
iOS 에서 웹 뷰(UiKitView)를 사용하기 위해서
'io.flutter.embedded_views_preview' 를 true 로 해줘야 합니다.
http 프로토콜을 이용하면 ERR CLEARTEXT NOT PERMITTED 에러가 뜹니다.
해당 관련 처리를 해줘야 합니다.
웹 뷰의 initialUrl 을 추가한 html 파일로 바꿔줍니다.
아무래도 iOS와 Android의 설정을 전부 건드려야 하는 만큼 길다면 길었습니다.
하지만 별도의 서버를 두고 하는 것보단 나은 방법으로 카카오 맵을 띄워보았습니다.
다음 글에서는 js 채널을 통해서 카카오맵 js api 와 상호작용을 해보겠습니다.