Error Codes
Asleep.setDebugLoggerDelegate()
let delegate: AsleepDebugLoggerDelegate = self
Asleep.setDebugLoggerDelegate(self)
protocol AsleepDebugLoggerDelegate {
func didPrint(message: String)
}
Property Name | Type | Description |
---|---|---|
message | String | Log 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
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 대응을 위한 정의 (v2.1.2<=SDK
)
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는 나올 확률이 낮음.
Updated 6 months ago