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
-
Xcode์์ File > Add Packages๋ฅผ ์ ํํฉ๋๋ค.
-
๋ค์ด์ผ๋ก๊ทธ ์ฐฝ์ repository url์ ์ ๋ ฅํฉ๋๋ค https://github.com/asleep-ai/asleep-sdk-ios.
-
๋ฒ์ ์์, Up to Next Major Version ๋ฐ ๊ธฐ๋ณธ ์ต์ ์ ์ ํํฉ๋๋ค.
-
Add Package
๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
Add Package
๋ฅผ ํ๋ฒ ๋ ํด๋ฆญํฉ๋๋ค.
-
Xcode์์, Targets ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํํ ํ
Signing & Capabilities
๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
+ Capability
๋ฅผ ํด๋ฆญํ๊ณBackground Modes
๋ฅผ ๋๋ธํด๋ฆญํฉ๋๋ค.
-
Audio, AirPlay, and Picture in Picture
๋ฅผ ์ ํํฉ๋๋ค.
-
Xcode์์, ๋ณธ์ธ์ Targets ์ ํ๋ฆฌ์ผ์ด์
Info
๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
+
๋ฅผ ํด๋ฆญํ๊ณPrivacy - Microphone Usage Description
๋ฅผ ์ ํํฉ๋๋ค.
-
๋ง์ดํฌ ๊ถํ ์์ฒญ ๋ฉ์์ง๋ฅผ ์์ฑํฉ๋๋ค.
2.2 Import the Asleep SDK
import AsleepSDK
3. Sleep Tracking with Asleep SDK
3.1 Step 1: Initialize the Asleep SDK
-
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)
-
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()
- ์๋ฉด ๋ณด๊ณ ์์ 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)
}
}
}
Updated over 1 year ago