개발자 모드

1. 개발자 모드 개요

1.1 개발자 모드란?

  • 기존 개발 과정의 불편함: 수면 분석 기능 사용을 위해서는 최소 20분의 측정 시간과 실제로 수면을 취하는 것이 필요합니다. 이로 인해 개발자들은 수면 단계의 감지 결과를 확인하기 위해 긴 대기 시간을 필요로 하며, 개발 환경에서 실시간으로 수면 분석 결과를 확인하기 어려움이 있었습니다.
  • 개발자 모드의 장점: 개발자 모드는 개발 과정에서 요구되는 대기 시간을 현저하게 줄여줍니다. 또한 실제 수면 상태가 아니더라도 사전에 분석된 수면 결과를 즉각적으로 검토할 수 있어, 개발 과정의 효율성을 크게 향상 시킵니다.

1.2 개발자 모드 활용법

  • 개발 중 수면 분석 결과 확인을 위해 대기하는 시간을 단축 시키기 위해 사용합니다.
  • 짧은 시간 안에 구현의 결과를 빠르게 확인하기 위해 사용합니다.
  • 실제 수면을 취하지 않더라도 수면 단계가 감지된 데이터를 확인하기 위해 사용합니다.
  • 정상적인 개발 과정을 빠르게 검증하기 위해 사용합니다.
    • 주의: 개발자 모드에서 특정 예외 케이스 확인이 가능하지만, 라이브에서 발생 가능한 모든 예외 케이스를 확인할 수는 없습니다. 정확한 예외 케이스는 라이브 모드에서 확인하셔야 합니다.

1.3 주요 기능

❗️

SDK/API 기능 제공: SDK 2.2.0에서 제공하는 모든 Method 확인이 가능하고, 실제 기능 구현과 동일한 환경에서 테스트 가능.

  • 분석 완료된 샘플 데이터 제공: 이미 분석이 완료된 샘플 수면 모니터링 결과 확인 (동일 데이터 반복 제공)
  • Sample Code 제공: 샘플 코드를 통해서 개발자 모드 설정 및 기능 확인 가능

2. 라이브 모드 vs 개발자 모드 비교

구분개발자 모드라이브 모드
사용
기능
SDK 2.2.0에서 제공해 주는 모든 기능SDK, API 모든 기능 제공
세션
생성
한 유저(User ID)당 하나의 수면 세션 생성 가능

- 2개 이상 세션 생성 시도시 Error Return
한 유저(User ID)당 하나의 수면 세션 유지

- 2개 이상 세션 생성시 이전 세션 종료 후 새로운 세션 생성
URLCallback URL 기능 제공, Base URL 기능 제공 안 함Callback URL과 Base URL 기능 제공
최소 측정 시간2분 (Upload 4회)20분 (Upload 40회)
업로드 주기30초마다 Upload(30초를 300초로 계산)30초
콜백 주기최소 측정 2분 후 30초마다 Callback Data 전달최소 측정 20분 후 5분(300초)마다 Callback Data 전달
분석 결과Tracking 종료 후 Call back Data와 Report는 측정 시간과 상관 없이 '이미 분석이 완료된 8시간 샘플 수면 분석 데이터'를 제공 (동일한 샘플 데이터를 반복적으로 제공)실제 수면 분석 결과 데이터 제공

3. Call Flow



4. 설정 방법

  • Developer Mode Flag "true" 설정 후 initAsleepConfig 호출
Asleep.DeveloperMode.isOn = true
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)
Asleep.DeveloperMode.isOn = true
Asleep.initAsleepConfig(context: Context,
                        apiKey: apiKey,
                        userId: String?,
                        baseUrl: String?,
                        callbackUrl: String?,
                        service: String?,
                        asleepConfigListener: Asleep.AsleepConfigListener)