AsleepConfig

Initialize Config

Asleep.initAsleepConfig()

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)
Property NameTypeDescription
apiKeyStringAPI Key 생성하기 에서 발급받은 값을 입력
userIdString?초기 userId가 없을 땐 nil을 입력, 이후 발급받은 userId를 입력
baseUrlURL?nil이면 기본값을 사용, proxy server 주소를 입력
callbackUrlURL?수면 세션 분석 결과를 받아올 서버의 url을 입력
serviceString?앱 이름을 입력
delegateAsleepConfigDelegate결과와 에러를 받을 Delegate을 전달

Token 방식

setup을 Token 방식으로 호출했다면 initAsleepConfig도 같은 인증 정보로 호출합니다.

Asleep.initAsleepConfig(appId: "YOUR_APP_ID",
                        appSecret: "YOUR_APP_SECRET",
                        userId: userId,
                        delegate: self)
Property NameTypeDescription
appIdString?대시보드에서 발급받은 App ID
appSecretString?대시보드에서 발급받은 App Secret
isTestEnvironmentBool?테스트 환경을 사용할 때만 true

나머지 파라미터(userId, baseUrl, callbackUrl, service, delegate)는 API Key 방식과 같습니다.

AsleepConfigDelegate

protocol AsleepConfigDelegate {
    func userDidJoin(userId: String, config: Asleep.Config)
    func didFailUserJoin(error: Asleep.AsleepError)
    func userDidDelete(userId: String)
}
  1. 성공 시, userDidJoin()가 호출됩니다.

    Property NameTypeDescription
    userIdString생성된 userId
    configAsleep.Config생성된 config
  2. 실패 시, didFailUserJoin()가 호출됩니다.

    Property NameTypeDescription
    errorAsleep.AsleepErrorError Codes
  3. userDidDelete()
    성공 시, userId를 포함한 사용자의 모든 데이터를 삭제합니다.

    Property NameTypeDescription
    userIdString삭제된 userId

Delete User

Asleep.deleteUser()

var config: Asleep.Config? 
if let config {
    Asleep.deleteUser(config: config)
}
Property NameTypeDescription
configAsleep.ConfigAsleep.Config 객체를 입력


User Metadata


사용자의 생년월일 · 성별 · 키 · 몸무게를 저장하고 조회합니다.

Asleep.saveUserMetadata()

var config: Asleep.Config?
let metadata = Asleep.Model.UserMetadata(birthYear: 1990,
                                         birthMonth: 5,
                                         birthDay: 21,
                                         gender: .female,
                                         height: 165.5,
                                         weight: 55.2)

Task {
    do {
        if let config {
            try await Asleep.saveUserMetadata(metadata, config: config)
        }
    } catch {
        print(error)
    }
}
Property NameTypeDescription
metadataAsleep.Model.UserMetadata저장할 사용자 정보
configAsleep.ConfiguserDidJoin에서 받은 config

Asleep.fetchUserMetadata()

var config: Asleep.Config?

Task {
    do {
        if let config {
            let metadata = try await Asleep.fetchUserMetadata(config: config)
        }
    } catch {
        print(error)
    }
}
Property NameTypeDescription
configAsleep.ConfiguserDidJoin에서 받은 config
(반환값)Asleep.Model.UserMetadata?저장된 정보. 아직 저장한 적이 없으면 nil

Asleep.Model.UserMetadata

struct UserMetadata {
    let birthYear: Int?
    let birthMonth: Int?
    let birthDay: Int?
    let gender: Gender?
    let height: Double?
    let weight: Double?
}

enum Gender: String {
    case male
    case female
    case nonBinary
    case other
    case preferNotToSay
}
Property NameTypeDescription
birthYearInt?출생 연도 (1900~2100)
birthMonthInt?출생 월 (1~12)
birthDayInt?출생 일 (1~31)
genderGender?성별
heightDouble?키, cm (1~500). 소수점 첫째 자리까지 저장 (그 아래는 버림)
weightDouble?몸무게, kg (1~1000). 소수점 첫째 자리까지 저장 (그 아래는 버림)
  • 모든 항목은 선택입니다. nil인 항목은 요청에 포함되지 않습니다.
  • 범위를 벗어난 값은 서버 요청 없이 metadataValidationFailed 에러를 던집니다. 월과 일의 조합(예: 2월 31일)은 검사하지 않습니다.

에러 코드

AsleepError상황
metadataValidationFailed저장 전 입력값 확인 실패. message에 원인 항목이 담깁니다
saveMetadataFailed저장 실패 (네트워크 · 서버 오류)
fetchMetadataFailed조회 실패 (네트워크 · 서버 오류)

Did this page help you?