Error Codes

Asleep.setDebugLoggerDelegate()

let delegate: AsleepDebugLoggerDelegate = self
Asleep.setDebugLoggerDelegate(self)
protocol AsleepDebugLoggerDelegate {
    func didPrint(message: String)
}
Property NameTypeDescription
messageStringLog message

Asleep.AsleepError

enum AsleepError: Error {
    case unknown(systemError: Error)
    case shouldResume
    case over24hours
    case audioInitializationFailed
    case unsupportedInDeveloperMode
  	case cannotActivateInBackground
    case startTrackingNetworkFail(code: Int, message: String?)
    case stopTrackingNetworkFail(code: Int, message: String?)
    case responseResult(endpoint: String)
    case httpStatus(code: Int, errorCode: Int, message: String?)
}

unknown: 알 수 없는 시스템 에러

  • systemError: Error - 시스템이 발생한 에러

shouldResume: 마이크 녹음 인터럽트 이후 재개할 수 없음

over24Hours: 녹음이 24시간 초과되어 강제 중지함

  • 에이슬립 SDK는 24시간을 초과하는 수면 측정을 지원하지 않습니다.

audioInitializationFailed: 오디오 관련 하드웨어 설정 오류

  • iOS 디바이스 오디오 초기화 오류 (2.2.0<=SDK)
    • Audio 설정 초기화를 위해 createSleepTrackingManager() 다시 호출

cannotActivateInBackground: 인터럽트 종료시 마이크 재시작에 실패할 경우 발생하는 오류

  • 이 오류가 발생하였을 경우 사용자에게 notification 등으로 알리고 앱을 foreground 상태에서 Asleep.SleepTrackingManager.resumeTracking()을 실행하여야 함.
  • 2.4.5<=SDK

startTrackingNetworkFail: startTracking 초기화 시 발생 하는 네트워크 오류

  • code: Int - 400 이상의 http code
  • message: String - 에러 사유 설명

stopTrackingNetworkFail: stopTracking 시 발생 하는 네트워크 오류

  • code: Int - 400 이상의 http code
  • message: String - 에러 사유 설명

responseResult: api reponse의 result값에 문제가 발생함

  • endpoint - 문제가 발생한 endpoint

httpStatus: http 에러

  • code: Int - 400 이상의 http code
  • errorCode: Int - 사용 안함
  • message: String - 에러 사유 설명

HTTP Status code

State: COMMON, INIT, TRACKING, REPORT

CodeTypeDescriptionStateHandling
401UnauthorizedUnauthorizedCOMMONClient Handling
401Unauthorizedinvalid user idCOMMONClient Handling
403Plan is expiredPlan is expiredCOMMONSDK Stop
403Rate limit exceededRate limit exceededCOMMONSDK Stop
403Quota exceededQuota exceededCOMMONSDK Stop
400Bad RequestInvalid callback urlTRACKINGClient Handling
400Bad Request[WARNING] Invalid session end time. format(YYYY-MM-DDTHH:mm:ssz), 'session_end_time' must always be greater than 'session_start_time’TRACKINGSDK Handling
403Forbiddenthe sleep session is already closedTRACKINGSDK Stop
404Not Foundsession does not exist.TRACKINGClient Handling
409Conflictprevious sleep session is not closed yetTRACKINGSDK Stop
422Validation ErrorInvalid parameterTRACKINGSDK Handling
422Unprocessable EntityInvalid parameter.TRACKINGSDK Handling
400Bad Requestinvalid timezoneREPORTClient Handling
400Unprocessable EntityThe format of sleep session id {session_id} is not validREPORTClient Handling
401UnauthorizedThe api key is not providedREPORTClient Handling
404Not FoundUnable to find the sleep session of id {session_id}REPORTClient Handling

SDK Error 대응을 위한 정의 (v2.1.2<=SDK)

SDK 구간 동작에 대한 정의

  • Init (initAsleepConfig) : SDK 초기화 상태
  • Tracking (SleepTrackingManager): 수면 모니터링을 위한 Audio Recording 환경과 Server의 통신 프로토콜 관리
  • Report (Reports): 수면 모니터링 결과

Error Case Definition

  • SDK Stop: SDK 내부에서 종료 처리. SDK 내부적으로 종료 처리 되어서 새로 시작을 위해서는 SDK 재시작 필요. SDK 상태에 따라서 자체적으로 Session 종료 및 Audio Recording 기능에 대한 종료 처리됨. initAsleepConfig 요청 부터 새로 시작해야 SDK 활성화
  • SDK Handling: SDK 내부적으로 Error 업데이트 후 다음 동작을 수행. 에러 수신 후 종료 처리를 하고 싶으면 SDK 호출된 상태에 따라서 처리가 필요. SDK 종료 처리를 위해서는 Tracking 상태에서만 stopTracking 호출해 줘야 하고 다른 구간에서는 별도 처리 필요 없음.
  • Client Handling: Client에서 조치를 해줘야 하는 에러. 개발시 Error 확인 용도
  • Do not used: 현재 버전에서 사용되고 있지 않는 에러

Error Handling 분류

  • SDK 사용시 주로 나오는 Error Code는 붉은 색으로 표시. 취소선으로 선택된 Error Code는 나올 확률이 낮음.