안녕하세요!
앱에서 카카오 맵을 사용하고 있습니다. 앱에서 처음 카카오 맵 화면으로 이동을 하거나 또는 idle 상태에서 화면이 다시 키면 약 1초간 연한 파라색의 화면이 표시된 후에 지도가 늦게 표시되는 문제가 있습니다. 이 문제를 어떻게 해결해야 하는지를 알고 싶습니다.
항상 감사드립니다.
해당 설명만으로는 세부 이슈를 파악하기 어려운데,
좀 더 자세히 설명해 주시면 확인해 보겠습니다.
앱을 종료 후에 다시 앱을 실행 시킨 후 지도 탭으로 이동하면 지도가 1초 후쯤에 표시됩니다. 이 1초 동안은 엷은 파란 바탕색이 표시되면 아마도 지도의 바탕색으로 보입니다. 지도에 상점 검색 기능이 있는데요, 상점 검색을 위한 입력 필드는 완전 정상으로 표시됩니다, 관련 증상의 스크린샷을 올렸습니다. 항상 감사드립니다.
안녕하세요~
해당 스샷만으로는 원일을 알 수 없습니다. 해당 지도탭을 누르기 전부터 눌렀을때의 디버그 로그도 첨부해 주시기 바랍니다.
그리고 web용 API일까요? app용 SDK일까요?
앱 sdk입니다. 플러터로 개발하고 있습니다. 제가 AI로 개발하고 있습니다.
Android: com.kakao.maps.open:android:2.15.0
iOS: KakaoMapsSDK 2.12.18
실측 로그에서 네이티브 SDK 자체가 보내는 인증 요청이 그대로 잡혔습니다:
D/K3fAApi: ---> RequestHeader(https://dapi.kakao.com/v2/maps/vector/auth)
{Authorization=[KakaoAK ...], KA=[mapSdk/2.15.0 os/android-36 lang/ko-KR
origin/... device/SM-A155N android_pkg/io.ziqoo.app]}
mapSdk/2.15.0 + android_pkg=io.ziqoo.app — Android 네이티브 지도 SDK가 자체적으로 발생시키는 vector map 인증 콜입니다. Web JS SDK의 appkey= 브라우저 인증 흐름과는 다릅니다.
상점 탭이 앱의 첫 화면이라, "완전 종료 → 재부팅"이 곧 "지도탭 진입"입니다. 그 구간의 실측 로그(불필요한 시스템 로그 제거, 민감정보 없음):
13:52:29.536 프로세스 시작 (재부팅)
13:52:31.731 D/MainActivity: Kakao native-first prewarm skipped: current PlatformView contexts cannot adopt a prebuilt MapView
13:52:33.936 I/BLASTBufferQueue: Flutter 첫 프레임 표시
13:52:34.193 D/KakaoMapNativeFirst: stage=prewarm_start
13:52:34.237 D/K3fAApi: ---> vector/auth 요청 (SDK 인증)
13:52:35.220 D/KakaoMapTrace: stage=view_factory_create_start (네이티브 지도 뷰 생성 시작)
13:52:35.243 D/KakaoMapTrace: stage=controller_created
13:52:35.246 D/KakaoMapTrace: stage=platform_get_view attached=false shown=false
13:52:36.186 D/KakaoMapController: onMethodCall: setLogoPosition ← view_factory_create_start 대비 +966ms
13:52:36.197 D/KakaoMapController: onMethodCall: setGestureEnable
---
같은 캡처에서 지도 표시와 거의 같은 시점에 두 가지 실제 오류가 반복 확인됐습니다. 이건 Kakao 서버/SDK 잘못이 아니라 third_party/kakao_maps_flutter(우리 쪽 플러그인 래퍼) 코드 버그로 보입니다:
setLogoPosition 호출이 ClassCastException: HashMap cannot be cast to JSONObject로 항상 실패
setGestureEnable(북쪽고정 제스처락) 호출이 "kakaoMap is not initialized" 에러로 11회 연속, 약 2.5초간 재시도 후에야 성공 (slow setGestureEnable elapsedMs=2555ms)
2번은 네이티브 컨트롤러가 준비되기 전에 Dart 쪽에서 125ms 간격으로 계속 method channel을 두드리는 구조라, 메인 스레드/채널 자원을 그 시간 동안 계속 소모합니다. 지도가 "늦게 표시"되는 체감에 실제로 영향을 줄 수 있는 유력한 후보입니다.
@Hanaloum6535 지도 API는 엔진 초기화를 위해 서버로부터 데이터 수신 및 초기화 과정이 필요합니다. 말씀하신 연한 녹색으로 대기중인 화면은 이 과정을 내부적으로 진행하고 있는 상태입니다. 이 과정을 앱 내부적으로 가린다던가 하는 방법으로 눈에 안보이도록 처리하시는 방법 외에 없애는 방법은 없습니다.
감사합니다.