수면 측정 중 에러 수신(v3.2.0)

변경 내용

SDK v3.2.0부터 수면 측정 중 Upload 과정에서 발생하던 6개의 개별 에러 코드(ERR_UPLOAD_BAD_REQUEST, ERR_UPLOAD_UNAUTHORIZED, ERR_UPLOAD_FORBIDDEN, ERR_UPLOAD_NOT_FOUND, ERR_UPLOAD_TOO_LARGE, ERR_UPLOAD_UNPROCESSABLE)가 ERR_UPLOAD_TRACKING_TERMINATED (23499)로 통합되었습니다.

발생 조건

Upload 중 HTTP 4xx 에러가 발생하면 ERR_UPLOAD_TRACKING_TERMINATED (23499)가 onFail 콜백으로 전달됩니다. 구체적인 에러 원인은 detail 파라미터에 포함됩니다.

대표적인 발생 상황:

- 다른 기기에서 측정 시작 - 동일한 user_id로 A 폰에서 수면 측정 중, B 폰에서 새로운 수면 측정을 시작하면 A 폰의 세션이 서버에서 종료됩니다. 이후 A 폰이 오디오를 업로드하면 서버가 거부하며 이 에러가 발생합니다.

- 24시간 이상 측정 - 수면 측정이 24시간을 초과하면 서버가 세션을 자동 종료합니다. 이후 업로드 시 이 에러가 발생합니다.

처리 방법

  override fun onFail(errorCode: Int, detail: String) {
      if (errorCode == AsleepErrorCode.ERR_UPLOAD_TRACKING_TERMINATED) {
          // detail에 구체적인 에러 내용 포함
          // Foreground Service 종료 등 클라이언트 정리 작업 수행
      }
  }

주의사항

- ERR_UPLOAD_TRACKING_TERMINATED 발생 시 SDK가 내부적으로 녹음 중지, 리소스 정리, 세션 close를 자동 수행합니다. 클라이언트에서 별도로 stopTracking()을 호출할 필요가 없습니다.

- 기존 Deprecated 에러 코드는 코드에 유지되지만, SDK 내부에서는 더 이상 반환하지 않습니다.