Quickstarters
Feature Overview
How to Build a Backend for WatchOS?
39 분
소개 이 튜토리얼에서는 watchos 앱을 위한 백엔드를 back4app을 사용하여 구축하는 방법을 알아볼 것입니다 당신이 iphone 앱 을 위한 watchkit 확장 을 만들고 있든, 독립형 apple watch 경험을 설계하고 있든, back4app은 필수 도구를 제공하여 작업을 간소화합니다 안전한 데이터베이스, 클라우드 코드 함수, 실시간 쿼리(라이브 쿼리), 사용자 인증과 같은 기능을 통합할 수 있으며, 모든 것을 자신의 서버를 관리하지 않고도 가능합니다 또한 back4app의 빠른 시작 루틴과 사용하기 쉬운 환경이 어떻게 watchos 앱 의 기능에 집중할 수 있도록 하는지 알게 될 것입니다 그 과정에서 작업 예약, 웹훅 설정, 푸시 알림 구성과 같은 작업을 처리하는 방법을 배울 것입니다 마지막에는 생산 수준의 요구를 위해 ios 애플리케이션 또는 watch 앱을 확장할 수 있는 확고한 기반을 갖추게 되며, 인터넷 연결 을 통해 watchkit 앱 과 백엔드 간의 원활한 데이터 동기화를 제공할 수 있습니다 전제 조건 back4app 계정과 새로운 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app 계정이 없으시다면 무료로 생성할 수 있습니다 위의 가이드를 따라 프로젝트를 준비하세요 watchos/xcode 개발 환경 xcode가 설치되어 있어야 하며 watchos sdk , 설치되어 있어야 합니다 실제 apple watch 또는 시뮬레이터에서 watchkit 확장 을 실행하고 빌드할 수 있습니다 parse swift sdk swift 패키지 관리자 https //github com/netreconlab/parse swift 를 사용하여 watchos 또는 결합된 ios 앱 에 대한 sdk를 설치하고 구성하세요 swift, xcode 및 apple의 개발 생태계에 대한 친숙함 apple 개발자 문서 https //developer apple com/documentation/ apple 플랫폼이 처음이라면 시작하기 전에 watchos 및 ios 문서를 탐색하는 데 시간을 할애하세요 시작하기 전에 이러한 전제 조건을 충족하는지 확인하세요 back4app 프로젝트를 설정하고 로컬 watchos 환경을 준비하면 원활하게 진행하는 데 도움이 됩니다 1단계 – back4app에서 새 프로젝트 만들기 및 연결하기 back4app 프로젝트가 필요한 이유 새로운 back4app 프로젝트는 모든 데이터를 저장하고 watchos 앱 에 대한 클라우드 코드를 실행하는 데 필수적입니다 이는 백엔드의 기초가 됩니다 프로젝트 만들기 back4app에 로그인하세요 대시보드에서 “새 앱” 을 클릭하세요 앱의 이름을 지정하세요 (예 “watchos backend tutorial”) parse swift sdk 설치하기 parse swift 의 의존성을 package swift 에 추가하거나 파일 → 스위프트 패키지 → 패키지 의존성 추가 를 사용하여 xcode에서 추가하세요 url을 제공하세요 dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] watchos 또는 공유 코드에서 parse 초기화 watchkit 앱의 시작 코드 또는 두 앱 모두에서 접근할 수 있는 공유 파일에서 watchos 와 iphone 앱 , parse를 초기화합니다 @main struct mywatchapp app { init() { task { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } 이 시점에서, 당신의 watchos 앱은 back4app 백엔드와 통신할 수 있습니다 독립적인 apple watch 앱이든 watchkit 확장 이든 iphone 앱 , 모든 백엔드 데이터는 parse swift sdk를 통해 흐릅니다 2단계 – 데이터베이스 설정 1\ 데이터 모델 생성 back4app은 parse server의 스키마 온 쓰기 기능을 사용합니다 back4app 데이터베이스 섹션에서 테이블(클래스)을 정의하거나 객체가 처음 저장될 때 자동으로 생성되도록 할 수 있습니다 예를 들어, watch 앱 이 건강 데이터를 추적하는 경우, heartrate, steps 또는 workouttype과 같은 필드를 가진 “healthmetrics” 클래스를 가질 수 있습니다 2\ ai 에이전트를 사용하여 데이터 모델 만들기 back4app의 ai 에이전트 는 스키마를 일반 언어로 설명할 수 있게 해줍니다 앱 대시보드에서 ai 에이전트 를 엽니다 “일일 걸음 수 (숫자), 심박수 (숫자) 필드가 있는 watch metrics 클래스를 설정해 주세요 ”와 같은 세부 정보를 제공합니다 ai가 자동으로 스키마를 생성합니다 3\ sdk를 사용하여 데이터 읽기 및 쓰기 아래는 watchos 앱에서 데이터를 저장하고 쿼리하는 예입니다 healthmetrics 구조체가 있다고 가정해 보겠습니다 import parseswift struct healthmetrics parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var dailysteps int? var heartrate int? } // saving data func savemetrics(steps int, heart int) async { var metrics = healthmetrics() metrics dailysteps = steps metrics heartrate = heart do { let saved = try await metrics save() print("saved metrics \\(saved)") } catch { print("error saving \\(error)") } } // querying data func fetchlatestmetrics() async { let query = healthmetrics query() do { let results = try await query find() print("fetched \\(results count) items") } catch { print("error fetching \\(error)") } } 4\ rest api를 사용한 데이터 읽기 및 쓰기 필요한 경우, 당신의 watchos 또는 ios 앱 도 rest 요청을 보낼 수 있습니다 curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"dailysteps" 8000, "heartrate" 75}' \\ https //parseapi back4app com/classes/healthmetrics 5\ graphql을 사용한 데이터 읽기 및 쓰기 back4app은 graphql 엔드포인트도 제공합니다 예를 들어 mutation { createhealthmetrics(input { fields { dailysteps 7500 heartrate 70 } }) { healthmetrics { objectid dailysteps heartrate } } } 6\ 라이브 쿼리 작업하기 (선택 사항) 실시간 데이터 업데이트가 필요한 경우, 당신의 apple watch , 라이브 쿼리를 활성화하세요 back4app의 서버 설정 에서 라이브 쿼리 를 켭니다 watchos 코드에서 라이브 쿼리 url을 구성합니다 parselivequery configure(url url(string "wss\ //your subdomain b4a io")!) 그런 다음 변경 사항을 구독합니다 func subscribemetricsupdates() async throws { let subscription = healthmetrics query() subscribe() for try await event in subscription { switch event { case created(let newdata) print("new data \\(newdata)") case updated(let updateddata) print("updated \\(updateddata)") default break } } } 3단계 – acl 및 clp로 보안 적용하기 1\ 간략한 개요 back4app은 데이터베이스를 보호하기 위해 접근 제어 목록(acl) 및 클래스 수준 권한(clp)을 허용합니다 예를 들어, 특정 메트릭을 생성한 사용자에게만 제한하거나 인증된 계정에 대해서만 읽기 접근을 허용할 수 있습니다 2\ 단계별 설정 클래스 수준 권한 기본값을 정의하려면 데이터베이스 → 클래스 → 보안 으로 이동하세요 (예 모두 읽기 전용, 소유자에게 쓰기) 코드에서의 acl watchkit 또는 공유 코드의 각 객체에 acl을 추가할 수 있습니다 예를 들어 if let user = user current { var acl = parseacl() acl setreadaccess(user user, value true) acl setwriteaccess(user user, value true) var metrics = healthmetrics() metrics acl = acl } 이것은 로그인한 사용자만 자신이 생성한 healthmetrics 객체를 보고 수정할 수 있도록 보장합니다 4단계 – 클라우드 코드 함수 작성 1\ 클라우드 코드의 필요성 클라우드 코드는 데이터 검증, 외부 api 호출 또는 로깅과 같은 복잡하거나 기밀적인 작업을 서버 측에서 실행하는 데 도움이 됩니다 이 설정은 watchos 장치의 작업 부하를 최소화하고 apple watch 의 배터리 수명을 유지하는 데 유용합니다 2\ 예제 함수 당신의 main js parse cloud define('processmetrics', async (request) => { const { dailysteps, heartrate } = request params; if (!dailysteps || !heartrate) { throw 'missing parameters '; } // example simple calculation return dailysteps heartrate; }); 3\ 배포 다음의 back4app cli https //www back4app com/docs/local development/parse cli 를 사용하여 배포하세요 b4a deploy 4\ installing npm modules if you need external libraries in your cloud code add dependencies in package json (within your cloud code folder) use require('your lib') in main js step 5 – configuring authentication 1\ enable user authentication by default, the user class is ready in back4app make sure “enable class level permissions” is set correctly for user objects 2\ code samples in parse swift, you might sign up a user from your watchos code struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupnewuser(name string, pass string, mail string) async { var newuser = user() newuser username = name newuser password = pass newuser email = mail do { let signedup = try await newuser signup() print("sign up successful \\(signedup)") } catch { print("error signing up \\(error)") } } 3\ social login if you plan on integrating apple, google, or facebook login in your watchos or iphone app, you can do so with the relevant parse swift social login features see back4app docs https //www back4app com/docs/platform/sign in with apple for details step 6 – handling file storage 1\ setting up file storage if your watch apps need to upload images, logs, or small data files, you can rely on parsefile func uploadfile(data data, filename string) async { let file = parsefile(name filename, data data) do { let savedfile = try await file save() print("uploaded file \\(savedfile url ?? "")") } catch { print("error uploading file \\(error)") } } 2\ 예시 운동 이미지나 일일 진행 상황 스냅샷을 저장할 수 있습니다 let snapshotdata = // some image data from watch screenshot task { await uploadfile(data snapshotdata, filename "workout jpg") } 3\ 보안 고려사항 파일 acl을 검토하세요 기본적으로 파일 url은 누군가가 직접 링크를 얻으면 접근할 수 있습니다 파스 서버의 파일 구성으로 파일 접근을 보호하거나 제어할 수 있습니다 7단계 – 이메일 인증 및 비밀번호 재설정 1\ 개요 apple watch 사용자는 항상 시계에서 직접 로그인을 관리하지 않을 수 있지만, 이메일 인증을 활성화하면 데이터를 안전하게 유지하는 데 도움이 됩니다 2\ back4app 대시보드 구성 이동하세요 앱 설정 → 이메일 이메일 인증을 활성화하세요 필요에 따라 템플릿을 사용자 정의하세요 3\ 코드/구현 비밀번호 재설정의 경우 do { try await user requestpasswordreset(email "example\@domain com") } catch { print("error requesting password reset \\(error)") } 8단계 – 클라우드 작업으로 작업 예약하기 1\ 클라우드 작업의 기능 클라우드 작업을 사용하면 오래된 데이터를 회전시키거나 watchos 분석을 위한 사용 보고서를 생성하는 등의 백그라운드 작업을 자동화할 수 있습니다 2\ 예시 다음의 main js parse cloud job('cleanupmetrics', async (request) => { const query = new parse query('healthmetrics'); // for example, remove records older than 7 days const now = new date(); const cutoff = new date(now 7 24 60 60 1000); query lessthan('createdat', cutoff); const oldmetrics = await query find({ usemasterkey true }); await parse object destroyall(oldmetrics, { usemasterkey true }); return `deleted ${oldmetrics length} old records `; }); 코드를 배포하세요 다음으로 가세요 앱 설정 → 서버 설정 → 백그라운드 작업 을 선택하고 매일 예약하세요 9단계 – 웹훅 통합하기 1\ 정의 웹훅은 특정 이벤트가 앱에서 발생할 때 외부 서비스에 알립니다 예를 들어, 새로운 메트릭이 기록될 때마다 slack 채널에 알림을 보낼 수 있습니다 2\ 설정 back4app 대시보드에서 더보기 → 웹훅 으로 이동하세요 엔드포인트(예 slack url)로 웹훅을 추가하세요 이벤트를 선택하세요(예 “healthmetrics에 새로운 기록”) 3\ 예시 사용자가 새로운 dailysteps 항목을 추가할 때마다, 귀하의 slack 채널에 알림이 전송됩니다 또한 cloud code에서 더 복잡한 논리를 정의하여 외부 서비스에 사용자 정의 페이로드를 보낼 수 있습니다 10단계 – back4app 관리 패널 탐색 1\ 어디서 찾을 수 있나요? 관리 패널은 귀하의 back4app 콘솔에서 더보기 → 관리 앱 비기술적 이해관계자를 위한 간단한 인터페이스가 필요하다면 이를 활성화하고 웹 기반 데이터 관리를 위한 관리자 사용자를 생성하세요 2\ 기능 데이터 보기 및 편집 로그 및 클라우드 작업 관리 분석 추적 또는 푸시 알림 전송 직접 데이터베이스나 코드 접근 없이 데이터에 협업할 수 있는 쉬운 방법입니다 결론 이 가이드를 통해 watchos용 백엔드 구축 방법 을 배웠습니다 안전한 데이터베이스 스키마를 설정하고, 클라우드 코드를 작성하며, 실시간 쿼리를 처리하고, 사용자 인증을 구현했습니다 이제 당신의 watchkit 앱 은 최소한의 번거로움으로 데이터를 저장하고 동기화할 수 있습니다 다음 단계 고급 클라우드 기능을 통합하여 개인화된 알림 또는 데이터 변환을 통해 시계 앱을 다듬으세요 추가 ios 애플리케이션 기능을 탐색하세요 예를 들어, apple watch 를 위한 백그라운드 동기화 및 캐싱 전략 고급 보안, 분석 및 성능에 대한 더 많은 정보를 보려면 공식 back4app 문서 https //www back4app com/docs/ 를 읽어보세요 app store에 최적화 하여 watchos 확장 또는 독립형 시계 앱을 배포하세요 백엔드를 확장함으로써, 제한된 인터넷 연결 에서도 원활하게 작동하는 강력한 watchos 앱 을 제공할 수 있습니다 계속 구축하고 apple watch 경험을 위해 back4app의 힘을 즐기세요!