These docs are for v1.0. Click to read the latest docs for v3.0.

Get Started

🚧

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

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

  • 수면 측정은 최소 20분 이상의 오디오가 업로드 되어야 분석이 시작되며, 그 이후로는 플랜(계약 조건)에 따라 5분 또는 20분 간격으로 분석합니다.

🔗 Test Environment Guideline 확인하기

1. Requirements

1.1 Minimum requirements on Asleep SDK for iOS

🚧

  • Xcode 14.1 혹은 더 높은 버전
  • iOS 14.0 혹은 더 높은 버전
  • Swift 5.0 혹은 더 높은 버전

1.2 API Key

에이슬립 SDK를 사용하기 위해서는 API key가 필요합니다.

API key를 발급하는 방법에 대해서는 이 링크 Generate API key를 참고하세요.


2. Getting Ready

에이슬립 SDK for iOS는 Xcode에 내장된 Swift Package Manager을 통해 배포됩니다.

2.1 Install Asleep SDK

  1. Xcode에서 File > Add Packages를 선택합니다.

  2. 다이얼로그 창에 repository url을 입력합니다 https://github.com/asleep-ai/asleep-sdk-ios.

  3. 버전에서, Up to Next Major Version 및 기본 옵션을 선택합니다.

  4. Add Package 를 클릭합니다.

  5. Add Package 를 한번 더 클릭합니다.

  6. Xcode에서, Targets 애플리케이션을 선택한 후 Signing & Capabilities 를 클릭합니다.

  7. + Capability 를 클릭하고 Background Modes를 더블클릭합니다.

  8. Audio, AirPlay, and Picture in Picture를 선택합니다.

  9. Xcode에서, 본인의 Targets 애플리케이션 Info 를 클릭합니다.

  10. +를 클릭하고 Privacy - Microphone Usage Description를 선택합니다.

  11. 마이크 권한 요청 메시지를 작성합니다.

2.2 Import the Asleep SDK

import AsleepSDK

3. Sleep Tracking with Asleep SDK

3.1 Step 1: Initialize the Asleep SDK

  1. SDK를 초기화 합니다

    • userId가 nil이면 새로운 userId가 생성됩니다.
    • baseUrl에는 프록시 서버를 입력하세요. nil이면 default base url이 사용됩니다.
    • callbackUrl은 분석 결과를 직접 받는 서버를 입력하세요. nil이면 콜백이 없습니다.
    • service는 개발할 앱의 닉네임이 있다면 입력하세요.
    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)
  2. config과 user ID를 받아옵니다

    extension YourClass: AsleepConfigDelegate {
        func userDidJoin(userId: String, config: Asleep.Config) {
            self.userId = userId
            self.config = config 
        }
    
        func didFailUserJoin(error: Asleep.AsleepError) {
            print(error)
        }
    
        func userDidDelete(userId: String) {
            print("\(userId) is deleted")
        }
    }
❗️

join을 하기 위해서 userId를 permanent storage 에 저장해야합니다.

3.2 Step 2: Create SleepTrackingManager

var config: Asleep.Config?
let delegate: AsleepSleepTrackingManagerDelegate = self
var manager: Asleep.SleepTrackingManager?

if let config {
    manager = Asleep.createSleepTrackingManager(config: config,
                                                delegate: self)
}
🚧

userDidJoin에서 발급 받은 Asleep.Config을 이용해야합니다.

3.3 Step 3: Start Tracking

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

startTracking()을 실행하려면 SDK는 마이크 권한이 필요합니다.

3.4 Step 4: Stop Tracking

var manager: Asleep.SleepTrackingManager?
manager?.stopTracking()
  1. 수면 보고서의 session ID를 불러옵니다
    extension YourClass: AsleepSleepTrackingManagerDelegate {
        func didClose(sessionId: String) {
          	self.sessionId = sessionId
        }
    }

3.5 Step 5: Create Reports

var config: Asleep.Config?
var reports: Asleep.Reports?

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

userDidJoin에서 발급 받은 Asleep.Config을 이용해야합니다.

3.6 Step 6: Get Report

var reports: Asleep.Reports?
var sessionId: String?

if let reports, let sessionId {
    // Closure
    reports.report(sessionId: sessionId) {
        if let error = $1 {
            print(error)
            return
        }
        
        if let report = $0 {
        }
    }

    // Async
    Task {
        do {
            let report: Asleep.Model.Report = try await reports.report(sessionId: sessionId)	
        } catch {
            print(error)
        }
    }
}

Did this page help you?