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 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 측정 중 트래킹 세션 정보
Concurrent Audio Capture (optional)
Asleep.SleepTrackingManager.setDeliveryDelegate()
var trackingManager = Asleep.createSleepTrackingManager(config: config, delegate: delegate)
trackingManager?.setDeliveryDelegate(self)
Asleep.AsleepAudioDeliveryManagerDelegate
protocol AsleepAudioDeliveryManagerDelegate: AnyObject {
func deliveryAudio(didReceiveRawBuffer buffer: AVAudioPCMBuffer,
at time: AVAudioTime)
}
SDK-클라이언트 동시 녹음이 필요한 경우에만 사용이 함수는 iOS에서 하나의 Audio Session만 사용하는 애플 권장 사항을 따르면서,
SDK와 클라이언트가 동시에 오디오를 다뤄야 하는 상황에서도 안정적으로 녹음 데이터를 제공하기 위해 사용됩니다. 특히 InputNode 레벨에서 PCM 데이터를 클라이언트 측으로 실시간 전달할 수 있도록 설계되었습니다.
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 | 수면 세션 상태 ( | |
startTime | Date | 세션 시작 시각 | |
endTime | Date? | 세션 종료 시각 | |
unexpectedEndTime | Date? | 비정상 세션 종료 시각. 앱 크래시 등으로 세션이 정상적으로 진행 및 종료되지 못했을 경우, 나중에 클라이언트가 initConfig 를 실행하여 세션을 종료시킨 시각이 기록됨. 이 경우 end_time은 마지막까지 업로드된 오디오 파일의 순서 번호를 기준으로 계산됨. 따라서 nil이 아닐 경우 비정상 세션. | |
createdTimezone | String | 세션이 생성된 타임존 (Timezone List) | |
sleepStages | Array<Int> | 수면 단계 리스트
| |
snoringStages | Array<Int> | 코골이 리스트
|
Updated 12 days ago