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 디바이스 오디오 초기화 오류
Audio 설정 초기화를 위해 createSleepTrackingManager() 다시 호출
cannotActivateInBackground: 인터럽트 종료시 마이크 재시작에 실패할 경우 발생하는 오류
이 오류가 발생하였을 경우 사용자에게 notification 등으로 알리고 앱을 foreground 상태에서 Asleep.SleepTrackingManager.resumeTracking()을 실행하여야 함.
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
Code
Type
Description
State
Handling
401
Unauthorized
Unauthorized
COMMON
Client Handling
401
Unauthorized
invalid user id
COMMON
Client Handling
403
Plan is expired
Plan is expired
COMMON
SDK Stop
403
Rate limit exceeded
Rate limit exceeded
COMMON
SDK Stop
403
Quota exceeded
Quota exceeded
COMMON
SDK Stop
400
Bad Request
Invalid callback url
TRACKING
Client Handling
400
Bad Request
[WARNING] Invalid session end time. format(YYYY-MM-DDTHH:mm:ssz), 'session_end_time' must always be greater than 'session_start_time’
TRACKING
SDK Handling
403
Forbidden
the sleep session is already closed
TRACKING
SDK Stop
404
Not Found
session does not exist.
TRACKING
Client Handling
409
Conflict
previous sleep session is not closed yet
TRACKING
SDK Stop
422
Validation Error
Invalid parameter
TRACKING
SDK Handling
422
Unprocessable Entity
Invalid parameter.
TRACKING
SDK Handling
400
Bad Request
invalid timezone
REPORT
Client Handling
400
Unprocessable Entity
The format of sleep session id {session_id} is not valid
REPORT
Client Handling
401
Unauthorized
The api key is not provided
REPORT
Client Handling
404
Not Found
Unable to find the sleep session of id {session_id}
REPORT
Client Handling
SDK Error 대응을 위한 정의
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는 나올 확률이 낮음.