Kotlin
Asleep.initAsleepConfig(
context: Context,
apiKey: String,
userId: String?,
baseUrl: String?,
callbackUrl: String?,
service: String?,
asleepConfigListener: Asleep.AsleepConfigListener,
asleepLogger: AsleepLogger?
)
Parameter Name Type Description context Context applicationContext를 입력 apiKey String Generate API key 에서 발급받은 값을 입력userId String? 초기 userId가 없을 땐 null을 입력, 이후 발급받은 userId를 입력 baseUrl String? null이면 기본값을 사용, 프록시 서버의 url을 입력 callbackUrl String? 수면 세션 분석 결과를 받아올 서버의 url을 입력 service String? 앱 이름 asleepConfigListener AsleepConfigListener userId를 콜백 받을 수 있는 리스너 asleepLogger AsleepLogger? SDK의 log를 콜백 받을 수 있는 리스너
setup을 Token 방식으로 호출했다면 initAsleepConfig도 같은 인증 정보로 호출합니다.
Kotlin
Asleep.initAsleepConfig(
context = applicationContext,
appId = "YOUR_APP_ID",
appSecret = "YOUR_APP_SECRET",
userId = userId,
asleepConfigListener = asleepConfigListener
)
Parameter Type Description appIdString?대시보드에서 발급받은 App ID appSecretString?대시보드에서 발급받은 App Secret isTestEnvironmentBoolean?테스트 환경을 사용할 때만 true. 기본값 null
나머지 파라미터(userId, baseUrl, callbackUrl, service, asleepConfigListener, asleepLogger)는 API Key 방식과 같습니다.
측정 도중 앱이 종료된 세션을 이어받을 때도 같은 인증 정보를 넘깁니다.
Kotlin
val config = Asleep.getSavedAsleepConfig(context, appId, appSecret)
Kotlin
interface AsleepConfigListener {
fun onSuccess(userId: String?, asleepConfig: AsleepConfig?)
fun onFail(errorCode: Int, detail: String)
}
성공 시, onSuccess()가 호출됩니다.
Parameter Name Type Description userId String? 새로 발급 하거나 입력한 userId asleepConfig AsleepConfig? SDK를 사용하기 위해 필요한 설정값
Kotlin
interface AsleepLogger {
fun d(tag: String, msg: String, throwable: Throwable? = null)
fun e(tag: String, msg: String, throwable: Throwable? = null)
fun i(tag: String, msg: String, throwable: Throwable? = null)
fun w(tag: String, msg: String, throwable: Throwable? = null)
}
SDK 내부에서 d(debug), e(error), i(info), w(warn)이 각각 발생하였을 때 호출됩니다.
Parameter Name Type Description tag String "[Asleep SDK]" msg String log message throwable Throwable? SDK 실행 중 발생할 수 있는 문제를 나타내는 class
SDK가 사용할 userId를 직접 설정합니다. 설정한 값은 이후 SDK 동작에 사용됩니다.
Kotlin
Asleep.setUserId(userId: String)
Parameter Name Type Description userId String 설정할 userId
녹음에 사용할 마이크 선택 정책을 주입합니다. createSleepTrackingManager() / beginSleepTracking() 호출 전에 설정해야 해당 세션에 적용됩니다.
지정 시 SDK는 선호 마이크 지정이 신뢰되도록 STEREO 캡처로 전환합니다(STEREO가 불가한 기기는 MONO로 폴백되며, 이 경우 기기에 따라 지정이 무시될 수 있습니다). null이면 기존과 동일하게 MONO 캡처 + 시스템 기본 라우팅으로 동작합니다.
SDK가 참조를 유지하므로, 더 이상 사용하지 않으면 null을 넘겨 해제하세요.
Kotlin
Asleep.setPreferredMicSelector(selector: PreferredMicSelector?)
Parameter Name Type Description selector PreferredMicSelector? 마이크 선택 정책. null이면 기본 동작으로 돌아갑니다
userId를 포함한 사용자의 모든 데이터를 삭제합니다.
Kotlin
fun deleteUser(deleteUserIdListener: DeleteUserIdListener?)
Parameter Name Type Description deleteUserIdListener DeleteUserIdListener? 삭제된 userId를 콜백 받을 수 있는 리스너
Kotlin
interface DeleteUserIdListener {
fun onSuccess(userId: String?)
fun onFail(errorCode: Int, detail: String)
}
성공 시, onSuccess()가 호출됩니다.
Parameter Name Type Description userId String? 삭제된 userId
포그라운드 서비스가 강제종료 된 후 재시작 되었을 때 종료되지 않은 세션이 존재하는지 체크합니다.
Kotlin
hasUnfinishedSession(context: Context): Boolean
Parameter Name Type Description context Context? applicationContext를 입력
🚧 Deprecated — getSavedAsleepConfig()는 restoreAsleepConfig()로 이름이 변경되었습니다. 동작은 같으며, 새 코드에서는 아래의 restoreAsleepConfig()를 사용하세요.
포그라운드 서비스가 강제종료 된 후 재시작 되었을 때 이전에 저장된 asleepConfig를 가져옵니다.
Kotlin
getSavedAsleepConfig(context: Context, apiKey: String): AsleepConfig?
Parameter Name Type Description context Context? applicationContext를 입력 apiKey String Generate API key 에서 발급받은 값을 입력
getSavedAsleepConfig()의 새 이름입니다. 동작은 getSavedAsleepConfig()와 동일하며, 포그라운드 서비스가 강제종료 된 후 재시작 되었을 때 이전에 저장된 asleepConfig를 가져옵니다.
API Key 방식과 Token 방식(appId · appSecret) 각각에 대한 오버로드를 제공합니다.
Kotlin
restoreAsleepConfig(context: Context, apiKey: String): AsleepConfig?
restoreAsleepConfig(context: Context, appId: String, appSecret: String): AsleepConfig?
Parameter Name Type Description context Context? applicationContext를 입력 apiKey String Generate API key 에서 발급받은 값을 입력appId String 대시보드에서 발급받은 App ID (Token 방식) appSecret String 대시보드에서 발급받은 App Secret (Token 방식)
사용자의 생년월일 · 성별 · 키 · 몸무게를 저장하고 조회합니다. initAsleepConfig에서 받은 AsleepConfig의 메서드로 호출합니다.
Kotlin
val metadata = UserMetadata(
birthYear = 1990,
birthMonth = 5,
birthDay = 21,
gender = UserMetadata.Gender.FEMALE,
height = 165.5f,
weight = 55.2f
)
asleepConfig?.saveUserMetadata(metadata, object : Asleep.SaveUserMetadataListener {
override fun onSuccess(userInfo: UserInfo) { }
override fun onFail(errorCode: Int, detail: String) { }
})
Parameter Type Description metadataUserMetadata저장할 사용자 정보 listenerSaveUserMetadataListener결과를 받을 리스너. 성공 시 갱신된 UserInfo가 전달됩니다
Kotlin
asleepConfig?.fetchUserMetadata(object : Asleep.FetchUserMetadataListener {
override fun onSuccess(metadata: UserMetadata?) {
// 저장된 정보가 없으면 null
}
override fun onFail(errorCode: Int, detail: String) { }
})
Parameter Type Description listenerFetchUserMetadataListener결과를 받을 리스너. 저장된 정보가 없으면 onSuccess(null)
Kotlin
interface SaveUserMetadataListener {
fun onSuccess(userInfo: UserInfo)
fun onFail(errorCode: Int, detail: String)
}
interface FetchUserMetadataListener {
fun onSuccess(metadata: UserMetadata?)
fun onFail(errorCode: Int, detail: String)
}
Kotlin
data class UserMetadata(
val birthYear: Int? = null,
val birthMonth: Int? = null,
val birthDay: Int? = null,
val gender: Gender? = null,
val height: Float? = null,
val weight: Float? = null
)
enum class Gender { MALE, FEMALE, NON_BINARY, OTHER, PREFER_NOT_TO_SAY }
Property Type Description birthYearInt?출생 연도 (1900~2100) birthMonthInt?출생 월 (1~12) birthDayInt?출생 일 (1~31) genderGender?성별 heightFloat?키, cm (1~500). 소수점 첫째 자리까지 저장 (그 아래는 버림) weightFloat?몸무게, kg (1~1000). 소수점 첫째 자리까지 저장 (그 아래는 버림)
🚧 범위를 벗어난 값을 넣으면 UserMetadata를 만드는 순간 IllegalArgumentException이 발생합니다. 리스너 콜백이 아니므로, 사용자 입력값을 그대로 넣는다면 입력 단계에서 검증하거나 try-catch로 감싸세요.
모든 항목은 선택입니다. null인 항목은 요청에 포함되지 않습니다.
월과 일의 조합(예: 2월 31일)은 검사하지 않습니다.
saveUserMetadata 성공 시 전달되며, v3.3.0부터 metadata 필드가 추가되었습니다.
Kotlin
data class UserInfo(
val createdTimezone: String?,
val nickName: String?,
val toBeDeleted: Boolean?,
val userId: String?,
val metadata: UserMetadata? = null
)
Code Name 상황 27000ERR_SAVE_METADATA_FAILED저장 실패 (네트워크 · 서버 오류, userId 미설정, SDK 미초기화) 27100ERR_FETCH_METADATA_FAILED조회 실패 (네트워크 · 서버 오류, userId 미설정, SDK 미초기화) 27400ERR_SAVE_METADATA_VALIDATION서버가 값을 거부함(400). detail에 원인이 담깁니다