안녕하세요~! 꾸준히 노력하는 iOS 개발자 Dave입니다😜
제가 이번에 회사 프로젝트로 만보기를 만들게 되었습니다😤
HealthKit을 사용하는 것이 아닌 걸음 수 데이터 조작이 불가능한 만보기를 만들어야하기 때문에 몹시 막막했습니다ㅠㅠ
참고 가능한 만보기 앱이 Toss앱에 있는 만보기 기능인데요.
열심히 구글링하며 찾아보니 생각보다 쉽더라구요🤩
그러면 지금부터 Toss 만보기를 개발해보도록 하겠습니다!!
Toss 만보기 개발하는 방법
우선 새로운 프로젝트를 생성해줍니다.
UI는 크게 신경 쓰지 않고, 걸음 수만 보일 수 있게 가운데에 UILabel 하나만 놔두겠습니다.

Toss 만보기를 개발하기 위해서는 Core Motion에 속한 CMPedometer를 사용해야합니다.
Core Motion이란?
가속도, 자이로스코프, 만보기 등 여러 iOS 장치의 하드웨어에서 동작 관련 데이터, 이벤트를 처리해주는 프레임워크
CMPedometer란?
시스템에 생성된 실시간 걸음 수 데이터를 가져오기 위한 객체
우선 CMPedometer를 사용하기 위해 CoreMotion을 import 해줍니다.
import CoreMotion
CoreMotion을 사용하기 위해서는 동의를 받아야합니다.
Info.plist의 Source Code에서 <dict> </dict> 안에 추가해주세요.
<key>NSMotionUsageDescription</key> <string>동의 문구 (ex.만보기 사용을 위해 동의해주세요.) </string>
CMPedometer에서 걸음 수 데이터를 가져올 수 있는 지 체크하는 코드를 적어줍니다.
// CMPedometer에서 걸음 수 데이터를 가져올 수 있는지 체크 if CMPedometer.isStepCountingAvailable() { 다음 실행문 }
실시간으로 걸음 수 데이터가 변경되면 실행되는 함수
pedometer.startUpdates(from: Calendar.current.startOfDay(for: Date())) { data, error in print(data?.numberOfSteps ?? 0) }
위에 코드들만 사용하면 Toss 만보기가 완성됩니다.
전체 코드
import UIKit import CoreMotion class ViewController: UIViewController { let pedometer = CMPedometer() @IBOutlet weak var pedometerLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // 걸음 수 데이터 가져올 수 있는지 체크 if CMPedometer.isStepCountingAvailable() { // 가져올 수 있으면 함수 호출 pedometerSubscription() } } // 실시간으로 걸음 수 데이터가 변경되면 text 업데이트 func pedometerSubscription() { pedometer.startUpdates(from: Calendar.current.startOfDay(for: Date())) { data, error in DispatchQueue.main.async { self.pedometerLabel.text = "\(data?.numberOfSteps ?? 0)" } } } }
오늘은 Toss 만보기를 개발하는 방법을 알려드렸습니다!
궁금하신 점이 있으시면 댓글을 남겨주세요~~!!
'iOS' 카테고리의 다른 글
| [iOS] 현재 앱 버전 가져오는 법 (0) | 2022.03.31 |
|---|---|
| [iOS] 키보드 내리기 - 화면 터치/return 키 (0) | 2021.11.30 |
| [iOS] Xcode에서 이모티콘 사용하는 법 (0) | 2021.11.25 |
| [iOS] 다크 모드 해제하는 법(Light 모드만 사용하기) (0) | 2021.11.16 |
| [iOS] 프로젝트에서 Cocoapods 삭제하는 법 (0) | 2021.11.10 |