Quickstart

AsleepTrack 도입

1. API Key 생성

AsleepTrack를 사용하려면 먼저 API Key를 발급받아야 합니다. 이를 위해 대시보드 회원 가입이 필요합니다. 회원 가입 후 "Generate API Key"를 통해 개발 및 테스트 용도로 사용할 수 있는 API Key를 발급받을 수 있습니다.
API Key 생성 URL: API Key 생성하기

Dashboard Log in => Setting => Generate API Key

Dashboard Sign in => Setting => Generate API Key

2. Trial Plan 적용

최초 회원 가입 시 Trial Plan이 적용되어 500개의 수면 세션 분석을 무료로 사용할 수 있습니다. Trial Plan에는 모든 수면 리포트 데이터에 접근이 가능합니다. 유효 호출의 기준은 다음과 같습니다:

  • 20분 이상의 연속된 사운드 데이터가 AsleepTrack 서버로 전송되어 수면 분석이 진행되고, 해당 분석 결과가 클라이언트에 제공된 경우 유효 호출로 간주됩니다.
  • 클라이언트 강제 종료나 충돌(Crash) 등의 문제가 발생하더라도 AsleepTrack 서버에서 수면 분석 결과가 생성된 경우 유효 호출로 간주됩니다. 이러한 경우 클라이언트는 결과 값을 AsleepTrack 서버에 재호출하여 받아올 수 있습니다.

3. B2B 서비스 계약

AsleepTrack에서 제공하는 기능을 검토한 후, 서비스 사용을 위한 정식 계약을 체결합니다.
AsleepTrack 플랜별 수면 리포트 데이터 URL: 플랜별 제공 데이터
AsleepTrack 정식 계약을 위한 문의 URL: Ask to Asleep

4. Enterprise Plan 적용

정식 계약 이후에는 계약서에 명시된 기준에 따라 수면 분석 서비스가 제공되며 계약 기준에 따른 수면 리포트 데이터에만 접근이 가능합니다.

AsleepTrack 개발 가이드

본격적인 개발에 들어가기 전에 Sample App을 통해 AsleepTrack을 이용한 수면 측정 서비스가 어떻게 구현되는지 소스 코드 레벨에서 확인할 수 있습니다. 안정적인 수면 측정 서비스 구현을 위해 Sample Appp을 참고하세요.

1. API Key 생성

대시보드를 통해 회원 가입 후 API Key를 생성합니다.
API Key 생성 URL: API Key 생성하기

2. Sample App을 통해 동작 확인

AsleepTrack Sample App의 소스 코드를 받아서 빠르게 수면 측정 기능을 확인해 볼 수 있습니다.
Sample App 가이드 URL: SDK Sample App 가이드

Sample App

Sample App Sleep Tracking

3. 개발 가이드

3.1 AsleepTrack SDK를 이용한 개발 Call Flow

AsleepTrack 서비스를 이용하려면 SDK에서 제공하는 단계별 상태와 기능을 이해해야 합니다. SDK는 수면 중 호흡음을 녹음한 후 Mel Spectrogram으로 변환하고, 변환된 Mel 데이터를 AsleepTrack 서버에 전달합니다. 이를 통해 실시간 수면 결과 또는 수면 종료 후 결과를 받아올 수 있습니다. AsleepTrack 서비스 사용 단계는 INIT, 주기적으로 오디오를 녹음 및 변환하여 서버에 전송하는 TRACKING, 수면 분석 결과를 확인할 수 있는 REPORT로 구분됩니다.
SDK 상태 정보 및 Call Flow 가이드 URL: SDK Call Flow

3.2 개발 환경 설정

AsleepTrack SDK를 이용해 Android, iOS에서 개발을 하기 위해서는 다음과 같은 개발 환경 설정이 필요합니다.
Android 개발 환경 설정: Android Get Started
iOS 개발 환경 설정: iOS Get Started

3.3 AsleepTrack Service 이용을 위한 개발 가이드

각 OS 별로 INIT, TRACKING 그리고 REPORT 단계에 대한 구현 가이드는 다음과 같습니다.
Android 개발: Android Sleep Tracking with AsleepTrack SDK
iOS 개발: iOS Sleep Tracking with AsleepTrack SDK

let apiKey: String = "YOUR_API_KEY"
let userId: String?
let baseUrl: URL?
let callbackUrl: URL?
let service: String?
let delegate: AsleepConfigDelegate = self

Asleep.initAsleepConfig(apiKey: apiKey,
                        userId: userId,
                        baseUrl: baseUrl,
                        callbackUrl: callbackUrl,
                        service: service,
                        delegate: self)
import ai.asleep.asleepsdk.Asleep
import ai.asleep.asleepsdk.data.AsleepConfig
import ai.asleep.asleepsdk.AsleepErrorCode

...

Asleep.initAsleepConfig(  
    context = applicationContext,  
    apiKey = "[input your apiKey]",  
    userId = null,  
    baseUrl = null,  
    callbackUrl = null,  
    service = "[input your AppName]",  
    object : Asleep.AsleepConfigListener {  
        override fun onSuccess(userId: String?, asleepConfig: AsleepConfig?) {  
						...
            /* save userId and asleepConfig */
  
        }
    override fun onFail(errorCode: Int, detail: String) {
        ...
    }
})
  • Create SleepTrackingManager
var config: Asleep.Config?
let delegate: AsleepSleepTrackingManagerDelegate = self
var manager: Asleep.SleepTrackingManager?

if let config {
    manager = Asleep.createSleepTrackingManager(config: config,
                                                delegate: self)
}
import ai.asleep.asleepsdk.tracking.SleepTrackingManager

...

var sleepTrackingManager = Asleep.createSleepTrackingManager(asleepConfig, object : SleepTrackingManager.TrackingListener {                           
    override fun onCreate() {
    }

    override fun onUpload(sequence: Int) {
    }
    
    override fun onClose(sessionId: String) {
        ...
        /* save sessionId */
    }
    
    override fun onFail(errorCode: Int, detail: String) {
    }
})
  • Start Tracking
var manager: Asleep.SleepTrackingManager?
manager?.startTracking()
sleepTrackingManager?.startSleepTracking()
  • Stop Tracking
var manager: Asleep.SleepTrackingManager?
manager?.stopTracking()
sleepTrackingManager?.stopSleepTracking()
var config: Asleep.Config?
var reports: Asleep.Reports?

if let config {
    reports = Asleep.createReports(config: config)
}
val reports = Asleep.createReports(asleepConfig)

reports?.getReport(sessionId, object : Reports.ReportListener {
    override fun onSuccess(report: Report?) {
    }

    override fun onFail(errorCode: Int, detail: String) {
    }
})

3.4 결과 확인 방법

AsleepTrack 서비스를 통해 결과를 확인 할 수 있는 방법은 SDK의 REPORT를 통해 확인 하는 방법과 Dashboard 또는 SDK의 INIT 단계에서 설정하는 Callback URL을 이용하여 Callback Server에서 확인이 가능합니다.
Dashboard에서는 Dashboard Home에 접속해 로그인 후 측정된 데이터의 결과를 Dashboard Analysis 탭의 내용을 참고해서 확인할 수 있습니다.
Callback 데이터는 Callback에 정의 되어있는 정보를 계약이 된 정책에 따라서 사용자의 Callback Server에 전달을 해 줍니다.

이렇게 수집된 데이터를 기반으로 수면 분석 내용을 전달해 줍니다. 수면 기초 지식을 통해 제공되는 데이터의 뜻이 이해할 수 있으며, 데이터를 활용해서 다양한 수면 리포트를 제공할 수 있습니다. 수면 리포트 디자인 가이드를 참고해 보시기 바랍니다.