SleepTrackingManager

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 NameTypeDescription
configAsleep.ConfigAsleep.Config 객체를 입력
delegateAsleepConfigDelegate결과와 에러를 받을 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)
}
  1. didCreate()
    tracking이 생성됩니다.

  2. didUpload()
    오디오 데이터가 업로드됩니다.

    Property NameTypeDescription
    sequenceIntepoch의 순서
  3. didClose()
    tracking이 종료됩니다.

    Property NameTypeDescription
    sessionIdStringReport 결과 조회를 위한 id 값
  4. didFail()
    에러로 인해 tracking이 종료됩니다

    Property NameTypeDescription
    errorAsleep.AsleepErrorError Codes
  5. didInterrupt()
    통화 등 interrupt가 발생하여 tracking이 중단됩니다.

  6. didResume()
    interrupt 요인이 사라져 tracking이 재개됩니다.

  7. micPermissionWasDenied()
    마이크 권한 없이는 tracking을 시작할 수 없습니다.

  8. analysing()
    현재까지 측정된 결과를 받아옵니다.

    Property NameTypeDescription
    sessionAsleep.Model.Session측정 중 트래킹 세션 정보

Start sleep tracking

Asleep.SleepTrackingManager.startTracking()

var manager: Asleep.SleepTrackingManager?
manager?.startTracking()

🚧

수면 측정 테스트 시 안내 사항을 따라주시기 바랍니다.

Asleep의 수면 측정/분석 기능을 정확하게 테스트하려면, 
테스트 환경 가이드를 반드시 따라주시기 바랍니다. 이 가이드를 준수하지 않은 환경에서 얻은 수면 분석 결과는 
실제 수면 패턴과 정확하게 일치하지 않을 수 있음을 유의해주세요.

🔗 Test Environment Guideline 확인하기


Request the latest analyzed sleep data

Asleep.SleepTrackingManager.requestAnalysis()

var manager: Asleep.SleepTrackingManager?
manager?.requestAnalysis()

Stop sleep tracking

Asleep.SleepTrackingManager.stopTracking()

var manager: Asleep.SleepTrackingManager?
manager?.stopTracking()

Get sleep tracking status

Asleep.SleepTrackingManager.getTrackingStatus()

var manager: Asleep.SleepTrackingManager?
let trackingStatus = manager?.getTrackingStatus()

Resume tracking

Asleep.SleepTrackingManager.resumeTracking()

  • 수면측정 중 cannotActivateInBackground 오류가 발생하였을 경우 사용자에게 notification 등으로 알리고 앱을 foreground 상태에서 Asleep.SleepTrackingManager.resumeTracking()을 실행하여야 함.
var manager: Asleep.SleepTrackingManager?
manager?.resumeTracking()

Data Type

Asleep.SleepTrackingManager.TrackingStatus

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 snoringStages: [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은 마지막까지 업로드된 오디오 파일의 순서 번호를 기준으로 계산됨. 따라서 nil이 아닐 경우 비정상 세션.

createdTimezone

String

세션이 생성된 타임존 (Timezone List)

sleepStages

Array<Int>

수면 단계 리스트
-1: error (invalid audio, analysis error, etc)
0 : wake
1 : light
2 : deep
3 : rem

snoringStages

Array<Int>

코골이 리스트
-1: error (invalid audio, analysis error, etc)
0 : no snoring
1 : snoring