KNSDK 1.9.2 지도 다운로드 문의 드립니다

안녕하세요. 현재 KNSDK 1.9.2를 사용중입니다.
현재 안드로이드에서 로컬 지도 다운로드 기능을 사용중인데 지도파일 전체를 다운 받고 SDK 이니셜라이즈할 때 지정해준 경로에 map 폴더에 로컬지도 파일(Ex 620MB)이 저장된 것을 확인하고 앱을 종료 후 다시 실행 시 해당 경로에 지도데이터 파일이 삭제가 되는 것을 확인했습니다.
로컬 다운로드 이후 어딘가에 파일 적용시키고 삭제되는 정상 시나리오인가요?

두번째로 파일다운로드시작 후 바로 취소(다운로드 리스너 onStop)호출 시 Exception 발생하는 문제가 있습니다.
이어받기 후 빠르게 취소(다운로드 리스너 onStop)호출을 해도 같은 Exception이 떨어지더라고요. 검토 부탁드립니다.

세번째로는 맵다운로드 리스너를 해제를 해주고 싶어도 해제하는 기능이 없는 것 같습니다.
onProgress()가 호출 되기전 취소(다운로드 리스너 onStop)호출 시 백그라운드에서는 뒤늦게 onProgress()가 들어오는 것으로 확인되어서 다운로드 정지에 문제가 있는 것 같아서 문의 드립니다.

문의 사항 읽어주셔서 감사합니다.

안녕하세요. 카카오모빌리티의 기술 제휴 담당자입니다.

문의 주신 내용으로는 정확한 답변이 어려워 아래 내용 확인이 필요합니다.

  1. 파일 삭제 관련: 파일 삭제가 데이터베이스(DB) 파일인지, 또는 다른 파일 형식인지 확인이 필요합니다. 다른 파일이라면 파일이 삭제되는 것이 맞습니다. Realm 파일은 일반적으로 .realm 형식으로 생성됩니다. DB 파일 자체가 사라진 경우라면, DB 파일을 지우는 함수인 clearDBFile 을 사용했는지 확인이 필요합니다.

  2. 바로 취소 관련: 바로 취소하는 경우 발생하는 Exception이 onError에 담겨져있는 메시지를 말씀하는 것인지요? 만약 바로 취소 시 201에러가 떨어진다면, 네트워크 요청을 강제로 종료한것이라 '파일 주소를 찾을 수 없다’는 에러를 띄우도록 되어있습니다. 이 경우엔 무시하셔도 됩니다.

  3. onProgress가 onStop 이후에 불리는 이유는 네트워크 인포 파일을 받고 난 뒤의 시점과 겹쳐지면 이미 받은 인포 파일을 확인하고 제거 하는 과정까지 모두 progress로 보내고 있습니다. 이는 progressType으로 구분하여 확인할 수 있습니다.

감사합니다.

안녕하세요. 답변감사합니다.

  1. 확인결과 600MB 가량의 map_23110612.realm 파일이 삭제되고 map_23110612.realm.lock, map_23110612.realm.note만 남아있는 것으로 확인했습니다. 앱 종료시 clearDBFile을 호출하지 않았는데도 삭제되는 것 같습니다.

  2. 바로 취소 관련하여 KNError 에러메시지 확인해보니 'File not Found on Redirection position.'이 출력되는 것으로 담당자님의 답변과 같음을 확인했습니다. 감사합니다.

  3. 현재 확인해본 결과 localMapDownload호출 후 onProgress가 들어오기전에 바로 onStop을 호출해도 onStop이후에 들어오는 onProgress의 processType은 FileDownload, Unzip인것으로 확인 되었습니다. onStop은 onProgress이후에만 적용가능한가요?

문의 사항 읽어주셔서 감사합니다.

안녕하세요, 문의하신 내용 답변드립니다.

  1. 전체 지도를 다운받으면 날짜가 붙은 파일이 생성됩니다. 다운로드가 완료되면 map.realm 파일은 삭제되고 map_23110612.realm 파일의 이름이 map.realm 으로 변경되면서 map.realm 파일이 최신화되는 것인데요. 파일 이름이 변경되기 때문에 삭제된 것처럼 보일 수 있습니다.

  2. 3번의 경우 원하시는 동작을 하시려면 pause → stop 순서로 호출하시면 됩니다.

감사합니다.

안녕하세요. 저번 답변확인 후 한동안 지도다운로드 부분을 신경쓰지 않고 있다가 개발하게 되어서 문의드립니다.
위에 답변 주신 1번항목 날짜가 붙은 파일이 다운로드 중 생성되었다가 map.realm으로 변경되는 것으로 확인했습니다.
2번항목도 해당 순서로 호출하니 정상작동되는 것으로 확인했습니다.

새로 질문드릴게 생겨서 문의 남깁니다.

  1. 지도 다운로드 완료 후 날짜map.realm파일이 map.realm파일로 변경되는 것도 확인하고 파일용량도 지도를 다운받은 사이즈인 것으로 확인 했습니다.
    하지만 앱 종료 후 재실행 시 map.realm파일의 용량이 3.7MB로 변경되어있고 지도 다운로드를 시작하면 다시 처음부터 다운로드를 받고 있습니다. map.realm파일의 용량이 지도 다운로드 완료 상태의 용량일때 시작 시 금방 onFinish()가 호출되는 것으로 보아 문제가 있는 것으로 확인됩니다. clearDB는 호출하지 않았습니다.

  2. 지도다운로드 완료 후 onFinish()가 호출되면 setMapLoadMode로 KNMapMode.KNLocal_Map으로 설정되게 해두었는데 그 상태에서 다시 KNMapMode.KNCloud_Map으로 변경 시 map.realm_rollback의 용량이 map.realm용량으로 변경되더라구요. 이는 정상 시나리오로 생각이 드는데 다시 이 상태에서 KNLocal_Map으로 변경하려는데 KNSDK.localMapDownload()를 사용해야할 지 setMapLoadMode()로 KNLocal_Map으로 설정해야만 하는지 알려주실 수 있나요?

바쁘신데 답변 감사합니다.

답변 부탁드립니다.
기다리고 있어요.

안녕하세요. 아래와 같이 답변드립니다.

  1. fun localMapDownload(onDownloadStateListener: OnDownloadStateListener, isAutoSwap: Boolean) 함수에서 isAutoSwap을 false로 설정한 경우, setMapLoadMode를 통해 맵 모드를 직접 변경해야 합니다. 그렇지 않으면 다운로드 받은 맵파일은 백업DB로 보관됩니다.
  2. 이 경우 다시받는 것이 아니라, setMapLoadMode를 통해 맵 디비 모드를 local_map으로 변경해주시면 됩니다.

감사합니다.

답변 감사합니다.
확인해보겠습니다.