DayExerciseInformation

기본 정보

번핏 iOS앱에서 ‘전송’ 버튼을 눌렀을 때 애플워치로 전송된 데이터를 처리해서 애플워치 앱 내에서 활용하기 위해서 만든 데이터입니다. 앱 전반에 걸쳐서 거의 모든 flow에 사용되는 핵심 데이터입니다.
현재 애플워치 앱에서 번핏 iOS앱으로부터 데이터 수신 시, 데이터 수신수신된 데이터를 기반으로 Realm 데이터 생성 및 저장 의 프로세스로 데이터를 Realm DB에 저장해서 사용하고 있습니다. 이 때 수신된 데이터를 기반으로 Realm 데이터를 생성해서 저장하고 애플워치 앱에서 사용하기 위해서 DayExerciseInformation 이라고 이름붙인 구조의 데이터를 사용하고 있습니다.

데이터 명세

데이터 클래스 코드는 Realm/Models 폴더 내의 DayExerciseInformation 파일에 작성되어 있습니다.
각 속성 별 구체적인 내용은 아래 상세 설명 부분에 기술되어 있습니다.
번핏앱에서 전송받는 데이터 예시
데이터의 속성에 대한 상세 설명

1. id

타입: ObjectId
설명: 생성된 객체의 고유 식별자입니다. Realm에서 자동으로 할당되는 값으로, 별도의 입력 없이 객체 생성 시 자동으로 생성됩니다.
특징: @Persisted(primaryKey: true)로 선언되어 기본 키로 설정되며, 각 객체는 고유한 id 값을 가집니다.

2. state

타입: String
설명: 데이터의 상태를 나타냅니다. 이 속성은 전송된 데이터가 어떤 종류인지 구분하는 역할을 합니다. 현재 아래 3가지 중 하나가 iOS앱에서 전달됩니다. 애플워치앱에서 데이터를 수신했을 때 실행되는 함수 안에서 조건 처리를 위해서 사용됩니다.
planned: 계획된 운동 데이터
exercise_completed: 운동이 완료된 후 번핏 iOS앱으로 다시 전송한 데이터가 잘 수신되었을 때 iOS앱에서 애플워치앱으로 보내는 데이터
exercise_list: 운동 라이브러리 데이터

3. from

타입: String
설명: 데이터 전송의 주체를 나타냅니다. state 값과 함께 애플워치앱에서 데이터를 수신했을 때 실행되는 함수 안에서 조건처리를 위해서 사용됩니다.
iOS앱 -> 애플워치앱으로 데이터 전송 시 App 이라는 값으로 전달됩니다.
애플워치앱 → iOS 앱으로 데이터 전송 시 Watch 라는 값으로 처리되어 전송합니다.

4. date

타입: String
설명: 데이터가 전송된 날짜를 나타냅니다. 이 값은 YYYY-MM-DD 형식의 문자열입니다.

5. language

타입: String
설명: 현재 DayExerciseInformation에 저장된 데이터와 함께 전송된 언어 코드를 의미합니다. 앱 내에서 언어관련 처리는 대부분 UserDefaults 라는, React Native 의 AsyncStorage와 비슷한 역할을 하는 DB로 처리되어 있습니다. DayExerciseInformation에 저장된 language는 기존에 애플워치에 운동 데이터가 있는 상황에서, 유저가 새로운 데이터를 전송했을 때 다른 언어값이 전송된 경우 이전 데이터의 언어값이 필요한 경우가 있어 사용됩니다.
전송되는 언어 목록: ko , ja , en , zh-Hans , zh-Hant , id

6. weightUnit

타입: String
설명: 기본 무게 단위를 나타냅니다.
kg 이거나 lbs 입니다.

7. restTime

타입: String
설명: 초단위로 설정된 기본 휴식 시간 값입니다.

8. dayExercise

타입: RealmSwift.List<DayExercise>
설명: 사용자가 생성한 운동 데이터 목록입니다. 위클리에서 유저가 생성한 운동 목록이 여기에 해당됩니다.(바벨 백스쿼트, 벤치 프레스 등등) 이 속성은 DayExercise 타입의 객체 리스트를 저장합니다.
특징: Realm에서 제공하는 List 타입으로 처리되어 있습니다. List 타입은 배열이라고 생각하면 되는데, Realm에서 Swift의 기본 Array 타입이 지원되지 않기 때문에 Realm에서 제공해주는 List 타입이 사용되었습니다.
DayExerciseInformation과 연계해서 함께 사용되는 데이터 2가지 - DayExercise, SetData
DayExerciseInfomation을 구성하는 속성 중, dayExercise 속성은 별도로 선언한 DayExercise 타입 데이터의 목록입니다. 그리고 각 dayExercise 요소의 data 속성은 별도로 선언한 SetData 타입 데이터의 목록입니다.
// 포함 구조를 간단하게 시각화하면 다음과 같습니다. // (편의를 위해 다른 속성들은 표기하지 않았습니다.) DayExerciseInformation └── dayExercise: List<DayExercise> // DayExercise타입 데이터의 배열 └── data: List<SetData> // SetData타입 데이터의 배열
JavaScript
복사
DayExerciseSetData 는 애플워치 앱에서 따로 구성한 데이터가 아니라, 번핏 iOS앱에서 전송된 데이터 구조에 맞춰 속성을 구성한 데이터입니다. DayExerciseInformation 과 동일한 파일에 정의되어 있으며 각 데이터의 속성은 번핏 iOS앱에서 사용되는 데이터와 동일합니다.