HIT해
[SwiftUI/WatchOS] 애플 워치 앱 개발해보기 본문
밤새서 프로젝트 개발을 하고 잠들기전 심심풀이로 애플워치 앱을 개발해보았다.
기존에 진행하던 3D 애완돌 프로젝트를 워치에도 적용할 수 있나 궁금했다.
하지만 SwfitUI의 대부분 기능은 동작하지만 UIKit의 기능을 SwiftUI에 불러와서 사용할 수는 없었다.
WatchOS에서는 UIResponsablity를 지원하지 않았다.
나는 기존 프로젝트에 워치앱을 추가해보았다.
https://developer.apple.com/watchos/
watchOS - Apple Developer
Learn about the latest major updates in watchOS that you can use to build great apps for Apple Watch.
developer.apple.com
기존 프로젝트에 WatchOS 앱 추가하기
공식문서나 다른 래퍼런스를 찾아보아도 iOS App with watchOS 를 통해서 프로젝트를 추가하라고 나와있지만 해당 버튼은 보이지 않았다.
하나하나 만들어본 결과 아래 버튼을 눌러서 프로젝트에 추가해주어야했다.
Xcode > File > New > Target > App
그럼 프로젝트에 추가가된다.
만드는 방법은 SwiftUI와 같지만 몇가지 제한되는게 많았다.
하지만 재미있는 기능이 있었다.
바로 CoreMotion 이다.
사용자의 동작을 감지하는 라이브러리인데 정확도가 굉장히 높다고한다.
그래서 간단하게 만보기를 만들어보았다.
import SwiftUI
import CoreMotion
struct WalkView: View {
@State private var stepCount: Int = 0
private var pedometer = CMPedometer()
var body: some View {
VStack {
Text("걸음 수: \(stepCount)")
.font(.title)
.padding()
}
.onAppear {
startPedometer()
}
.onDisappear {
stopPedometer()
}
}
private func startPedometer() {
if CMPedometer.isStepCountingAvailable() {
let now = Date()
pedometer.startUpdates(from: now) { data, error in
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
if let data = data {
DispatchQueue.main.async {
stepCount = data.numberOfSteps.intValue
}
}
}
} else {
print("만보기 기능을 지원하지 않습니다.")
}
}
private func stopPedometer() {
pedometer.stopUpdates()
}
}
그리고 실행을 해보았다.
WatchOS에서도 SceneKit 사용이 가능한지 테스트해보아서 처음에는 귀여운 애완돌이 나왔을 것이다.
그리고 만보기 페이지로 이동하고 에러가 발생했는데 이는 Info.plist 권한 설정을 해주지 않아서 발생하는 문제다.
<key>NSMotionUsageDescription</key>
<string>This app uses motion data to track your steps and improve your health experience.</string>
해당 권한을 추가하고 다시 시작해주면?
시뮬레이터라서 CoreMotion 기능이 작동하지 않아서 실행되지 않는다.
이때를 위해서 애플워치SE를 구매해놓았다..! 후후...
하지만
https://forums.developer.apple.com/forums/thread/747784
Apple Watch not showing in XCode | Apple Developer Forums
What is bizarre for me is that the watch is not showing up under my iPhone in Xcode in devices like it normally does. However, when I built my app to the phone, the watch extension also built and works fine. It might be worth trying to build to see if it's
forums.developer.apple.com
나를 포함한 모든 사람들의 맥북이 Watch를 인식하지 못한다.
Xcode 15.3이후로 모든 사람들이 일괄적으로 겪는 문제라고 한다... ( 내 11만원... )
애플은 참 혁신적이면서도 엉성한 부분이 참 많은 회사같다.
'Swift > Swift 개발 노트' 카테고리의 다른 글
[Swift/SceneKit] 3D 모델 캡쳐하기 (0) | 2024.09.23 |
---|---|
[Swift/WatchOS] WatchOS WorkOutKit 개발해보기 (0) | 2024.09.23 |
[Swift/Xcode] Multiple commands produce 해결하기 ( feat Tuist ) (0) | 2024.09.20 |
[Swift/TCA] TCA를 활용한 테스트코드 작성 (TCA ver 1.12.1) (0) | 2024.09.20 |
[iOS/SwiftUI] TCA API 통신 구현하기 with AF ( TCA 1.12.1 ) (0) | 2024.09.05 |