주행 중 화면이 꺼지면 안전운행 콜백이 간헐 중단되는 현상 문의 (Android 1.12.8-hotfix02 · iOS 1.10.9 공통)

안녕하세요. KNSDK 안전운행 기능을 사용 중인 개발자입니다.

사용 환경

  • Android: KNSDK 1.12.8-hotfix02, Samsung SM-S921N / Android 16 (API 36)
  • iOS: KNSDK 1.10.9, iPhone 13 mini / iOS 26.6 — 동일 현상이 양 플랫폼에서 재현됩니다
  • 앱을 포그라운드에서 실행해 안전운행(경로상 카메라·안전 POI) 콜백을 음성 안내에 사용하고 있습니다. 주행 안내가 끊기지 않도록 백그라운드 위치 구성(Android는 위치 타입 포그라운드 서비스, iOS는 백그라운드 위치 갱신)을 함께 사용합니다.
  • 배터리 최적화 면제, 절전 모드 꺼짐, 도즈 아님, 위치 사용 항상 허용을 확인한 상태입니다.

증상

  • 포그라운드에서 정상 동작하다가, 주행 중 단말 화면이 꺼지면(자동 꺼짐 등) 안전운행 콜백이 간헐적으로 2~3분간 완전히 멎습니다. 같은 시간 저희가 별도 구독하는 플랫폼 위치(Android FusedLocation / iOS CoreLocation)는 정상 수신되고 있어 위치 공급 문제는 아닌 것으로 보입니다.
  • 이 상태에서 가이던스를 stop → start로 재시작하면 수 초~20초 내에 예외 없이 정상 재개됩니다 — 지도 데이터·위치 신호가 아니라 SDK 내부 상태(위치 구독 또는 이벤트 공급 경로)가 멎는 것으로 추정합니다.
  • 하루 왕복 주행(약 1.5시간) 기준 10회 이상 반복됩니다. Android 실측 예: 09:28 무콜백 163초(이동 3.0km) → 재시작 → 20초 내 회복 → 09:35 무콜백 123초(3.1km) → 재시작 → 회복 → 09:38 무콜백 179초(4.4km) → 재시작 → 회복. 같은 날 iOS(1.10.9)에서도 동일 패턴이 재현됐습니다(09:18 무콜백 122초 → 재시작, 09:28 165초, 09:34 123초 — 모두 위치 콜백은 정상). 발생은 모두 화면이 꺼진 구간에서였습니다.

문의

  1. 주행 중 화면이 꺼졌을 때 위치는 정상 수신되는데 안전운행 콜백만 수 분간 멎는 현상이 알려진 이슈인지, Android 1.12.8 / iOS 1.10.9 이후 버전에서 관련 개선 내역이 있는지 궁금합니다. 서로 다른 두 플랫폼에서 같은 패턴이라 앱 구현보다 SDK 공통 동작으로 추정하고 있습니다.
  2. 이 상태에서 재시작 외에 권장되는 회복 방법이 있을까요? (재시작은 안내 공백이 생기고, 이전 답변 기준으로 세션 재시작마다 safety 호출이 재차감되는 것으로 이해하고 있어 쿼터 부담도 큽니다.)
  3. 화면이 꺼진 동안에도 콜백 공급을 안정적으로 유지하기 위한 권장 구성(초기화 옵션·위치 공급 방식·생명주기 처리 등)이 있다면 안내 부탁드립니다.
  4. SDK 쪽 원인으로 확인된다면, 회복용 재시작으로 발생한 safety 차감분의 보정이 가능한지도 함께 여쭙습니다.

감사합니다.

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

아래와 같이 답변드립니다.

1. 주행 모드 확인 (경로 주행 vs 안전운행 모드)
테스트하신 환경이 목적지를 설정한 '경로 안내' 중인지, 아니면 목적지 없이 주행하는 '안전운행' 모드인지 확인이 필요합니다.

2. 위치 콜백(guidanceDidUpdateLocation)의 동시 중단 여부
안전운행 관련 콜백(guidanceDidUpdateSafetyGuide)은 안내할 데이터(카메라 등)가 검출될 때만 발생하므로 매 초 주기로 전달되지 않는 것이 정상입니다.
확인 사항: 안전운행 콜백이 멎었다고 판단되는 2~3분 동안, 매 초 호출되어야 하는 guidanceDidUpdateLocation 콜백도 함께 멈추는지 확인 부탁드립니다.
이유: 위치 콜백이 정상이라면 엔진은 동작 중이나 '안전운행 판정 로직'만 멎은 것이고, 위치 콜백까지 멈췄다면 OS에 의해 'SDK 내부 이벤트 루프' 자체가 차단된 것입니다.

3. 생명주기 및 SDK 백그라운드 함수 호출 여부
단말기 화면이 꺼질 때 앱의 **Activity onPause**가 정상적으로 호출되는지, 그리고 이때 **KNSDK.handleDidEnterBackground()**를 명시적으로 호출하고 계신지 확인 부탁드립니다.
이유: 해당 함수는 백그라운드 환경에 맞춰 SDK 내부 리소스와 네트워크 세션을 최적화하는 역할을 합니다. 이 호출이 누락될 경우 OS의 절전 정책과 충돌할 가능성이 큽니다.

4. 화면 복구(Screen ON) 시 즉시 수신 여부
콜백이 멎은 상태에서 별도의 재시작(Stop/Start) 없이, 단말기를 들어 올리거나 버튼을 눌러 화면만 켰을 때(Screen ON) 멎었던 콜백들이 즉시 다시 들어오는지 확인 부탁드립니다.
이유: SDK는 콜백을 임의로 제거하지 않습니다.

감사합니다.