SleepTrackingManager
1. Create manager
Asleep.createSleepTrackingManager()
var config: Asleep.Config?
let delegate: AsleepSleepTrackingManagerDelegate = self
var manager: Asleep.SleepTrackingManager?
if let config {
manager = Asleep.createSleepTrackingManager(config: config,
delegate: delegate)
}
Property Name | Type | Description |
---|---|---|
config | Asleep.Config | Asleep.Config 객체를 입력 |
delegate | AsleepConfigDelegate | 결과와 에러를 받을 Delegate을 전달 |
AsleepSleepTrackingManagerDelegate
protocol AsleepSleepTrackingManagerDelegate {
func didCreate()
func didUpload(sequence: Int)
func didClose(sessionId: String)
func didFail(error: Asleep.AsleepError)
func didInterrupt()
func didResume()
func micPermissionWasDenied()
func analysing(session: Asleep.Model.Session)
}
-
didCreate()
tracking이 생성됩니다. -
didUpload()
오디오 데이터가 업로드됩니다.Property Name Type Description sequence Int epoch의 순서 -
didClose()
tracking이 종료됩니다.Property Name Type Description sessionId String Report 결과 조회를 위한 id 값 -
didFail()
에러로 인해 tracking이 종료됩니다Property Name Type Description error Asleep.AsleepError Error Codes -
didInterrupt()
통화 등 interrupt가 발생하여 tracking이 중단됩니다. -
didResume()
interrupt 요인이 사라져 tracking이 재개됩니다. -
micPermissionWasDenied()
마이크 권한 없이는 tracking을 시작할 수 없습니다. -
analysing()
현재까지 측정된 결과를 받아옵니다.Property Name Type Description session Asleep.Model.Session 측정 중 트래킹 세션 정보
2. Start sleep tracking
Asleep.SleepTrackingManager.startTracking()
var manager: Asleep.SleepTrackingManager?
manager?.startTracking()
수면 측정 테스트 시 안내 사항을 따라주시기 바랍니다.
Asleep의 수면 측정/분석 기능을 정확하게 테스트하려면, 테스트 환경 가이드를 반드시 따라주시기 바랍니다. 이 가이드를 준수하지 않은 환경에서 얻은 수면 분석 결과는 실제 수면 패턴과 정확하게 일치하지 않을 수 있음을 유의해주세요.
🔗 Test Environment Guideline 확인하기
3. Request the latest analyzed session
Asleep.SleepTrackingManager.requestAnalysis()
var manager: Asleep.SleepTrackingManager?
manager?.requestAnalysis()
4. Stop sleep tracking
Asleep.SleepTrackingManager.stopTracking()
var manager: Asleep.SleepTrackingManager?
manager?.stopTracking()
5. Get sleep tracking status
Asleep.SleepTrackingManager.getTrackingStatus()
v2.1.2 <= SDK
var manager: Asleep.SleepTrackingManager?
let trackingStatus = manager?.getTrackingStatus()
6. Resume tracking
Asleep.SleepTrackingManager.resumeTracking()
- 수면측정 중 cannotActivateInBackground 오류가 발생하였을 경우 사용자에게 notification 등으로 알리고 앱을 foreground 상태에서 Asleep.SleepTrackingManager.resumeTracking()을 실행하여야 함.
v2.4.5 <= SDK
var manager: Asleep.SleepTrackingManager?
manager?.resumeTracking()
7. Data Type
Asleep.SleepTrackingManager.TrackingStatus
v2.1.2 <= SDK
struct TrackingStatus {
var sessionId: String?
}
Property name | Type | Description |
---|---|---|
sessionId | String? | 현재 Tracking 중인 session id AsleepSleepTrackingManagerDelegate의 didCreate 함수에서 부터 사용할수 있으며 해당 Session이 Close 될때 까지 유요하다 |
Asleep.Model.Session
struct Session {
let id: String
let state: State
let startTime: Date
let endTime: Date?
let unexpectedEndTime: Date?
let createdTimezone: String
let sleepStages: [Int]?
let breathStages: [Int]?
}
enum State {
case open
case closed
case complete
}
Property name | Type | Description | Version |
---|---|---|---|
id | String | 수면 세션 ID | |
state | Asleep.Model.State | 수면 세션 상태 (OPEN , CLOSED , or COMPLETE ) | |
startTime | Date | 세션 시작 시각 | |
endTime | Date? | 세션 종료 시각 | |
unexpectedEndTime | Date? | 비정상 세션 종료 시각. 앱 크래시 등으로 세션이 정상적으로 진행 및 종료되지 못했을 경우, 나중에 클라이언트가 initConfig 를 실행하여 세션을 종료시킨 시각이 기록됨. 이 경우 end_time은 마지막까지 업로드된 오디오 파일의 순서 번호를 기준으로 계산됨. 따라서 null이 아닐 경우 비정상 세션. | 2.2.0<=SDK |
createdTimezone | String | 세션이 생성된 타임존 (Timezone List) | 2.2.0<=SDK |
sleepStages | Array<Int> | 수면 단계 리스트-1 : error (invalid audio, analysis error, etc)0 : wake1 : light2 : deep3 : rem | |
breathStages | Array<Int> | 호흡 안정도 단계 리스트-1 : error (invalid audio, analysis error, etc)0 : stable1 : unstable |
Updated 6 months ago