Quickstarters
Feature Overview
How to Build a Backend for tvOS?
41 분
소개 이 튜토리얼에서는 tvos 앱을 위해 back4app을 사용하여 백엔드를 구축하는 방법을 배웁니다 우리는 데이터베이스 관리, 클라우드 코드 함수, rest 및 graphql api, 사용자 인증, 실시간(라이브 쿼리)과 같은 필수 back4app 기능을 통합하여 apple tv 앱과 원활하게 통신하는 안전하고 확장 가능한 백엔드를 만드는 방법을 다룰 것입니다 back4app의 간소화된 환경과 빠른 설정이 서버와 데이터베이스를 수동으로 구성하는 것에 비해 시간을 얼마나 크게 단축하는지 확인할 수 있습니다 이 과정에서 고급 보안 기능, 클라우드 작업 예약 및 웹후크 통합을 포함한 주요 기능에 대한 실습 경험을 얻게 될 것입니다 이 튜토리얼이 끝나면 이 기본 구조를 프로덕션 준비가 완료된 tvos 앱으로 발전시키거나 사용자 정의 논리 및 타사 api를 쉽게 포함할 준비가 될 것입니다 이 가이드는 또한 높은 품질 의 사용자 경험을 apple tv , xcode 프로젝트 및 기존 ios 개발 지식을 활용하여 유지하는 데 도움이 될 것입니다 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 back4app 계정 및 새로운 back4app 프로젝트 back4app 시작하기 https //www back4app com/docs/get started/new parse app 계정이 없으신 경우 무료로 생성할 수 있습니다 위의 가이드를 따라 프로젝트를 준비하세요 xcode(최신 안정 버전) 설치 swift 또는 swiftui로 tvos 앱 을 구축할 것입니다 mac app store에서 최신 xcode를 확보하세요 parse swift sdk 당신의 tvos 앱을 연결하기 위해 parse swift sdk https //github com/netreconlab/parse swift 을 설정하세요 swift 및 기본 ios/tvos 개발 개념에 대한 친숙함 apple tv에 처음이라면 apple tvos 문서 https //developer apple com/tvos/ 또는 초급 튜토리얼을 먼저 검토하세요 시작하기 전에 이러한 모든 전제 조건이 준비되어 있는지 확인하세요 back4app 프로젝트를 준비하고 로컬 tvos xcode 프로젝트 를 설정하면 더 쉽게 따라할 수 있습니다 1단계 – back4app에서 새 프로젝트 만들기 및 연결 새 프로젝트 만들기 back4app에서 tvos 앱 백엔드 를 구축하는 첫 번째 단계는 새 프로젝트를 만드는 것입니다 아직 하지 않았다면, 다음 단계를 따르세요 back4app 계정에 로그인하세요 back4app 대시보드에서 “새 앱” 버튼을 클릭하세요 앱에 이름을 지정하세요 (예 “tvos backend tutorial”) 생성된 후, back4app 대시보드에서 프로젝트가 나열된 것을 볼 수 있습니다 이 새로운 back4app 프로젝트는 이 튜토리얼에서 다루는 모든 백엔드 구성의 핵심입니다 parse swift sdk 연결하기 back4app은 parse 를 활용하여 데이터 저장, 사용자 인증, 실시간 기능 등을 처리합니다 tvos 앱 을 back4app에 연결하려면 xcode 프로젝트 에 parse swift sdk를 설치하고 구성하세요 parse 키 가져오기 back4app 대시보드에서 “앱 설정” 또는 “보안 및 키”로 이동하여 애플리케이션 id 와 클라이언트 키 를 찾으세요 또한 parse 서버 url —일반적으로 https //parseapi back4app com 을 볼 수 있습니다 tvos 프로젝트에 parse swift sdk 설치하기 swift 패키지 관리자 (권장) xcode에서 파일 → 패키지 추가 를 선택하세요 parse swift github url을 입력하세요 https //github com/netreconlab/parse swift git 적절한 버전 또는 메인 브랜치를 선택하세요 cocoapods cocoapods를 선호하는 경우, podfile에 다음을 추가하세요 pod 'parseswiftog' 그런 다음 pod install 을 실행합니다 parse 초기화 를 appdelegate 또는 @main 구조체에서 수행합니다 import parseswift import swiftui @main struct mytvosapp 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() } } } 이것은 당신의 tvos 앱 이 back4app 백엔드와 통신하도록 구축되었음을 보장하며, 데이터를 저장하고, 쿼리를 실행하고, 사용자를 인증하고, 그 외의 작업을 수행할 수 있게 해줍니다 2단계 – 데이터베이스 설정 데이터 모델 생성 이제 tvos 앱이 back4app에 연결되었으므로 데이터를 생성하고 관리할 수 있습니다 parse swift에서는 parseobject 구조체를 정의합니다 struct gamescore parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom fields var score int? var playername string? } back4app 대시보드에서 수동으로 클래스를 정의할 수도 있습니다 “데이터베이스”로 이동 back4app 콘솔에서 새 클래스 만들기 (예 “gamescore”) 관련 열 추가하기 (점수, 플레이어 이름 등) ai 에이전트를 사용한 데이터 모델 생성 back4app의 ai 에이전트는 자동으로 스키마를 설계할 수 있습니다 ai 에이전트 열기 back4app 대시보드에서 모델 설명하기 (예 “제목과 iscompleted 필드가 있는 todo 클래스를 생성”) 적용하기 ai 에이전트가 스키마를 생성하도록 하세요 sdk를 사용한 데이터 읽기 및 쓰기 func savescore() async { var gamescore = gamescore() gamescore score = 1337 gamescore playername = "tvos fan" do { try await gamescore save() print("score saved successfully ") } catch { print("error saving score \\\\(error)") } } func fetchscores() async { let query = gamescore query() do { let results = try await query find() print("fetched scores \\\\(results)") } catch { print("error fetching scores \\\\(error)") } } rest api를 사용한 데이터 읽기 및 쓰기 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 '{"score" 9000, "playername" "applefan"}' \\ https //parseapi back4app com/classes/gamescore graphql api를 사용한 데이터 읽기 및 쓰기 mutation { creategamescore(input { fields { score 420 playername "swiftie" } }) { gamescore { objectid score playername } } } 실시간 쿼리 작업하기 (선택 사항) 실시간 쿼리는 apple tv 인터페이스에서 실시간 업데이트를 가능하게 합니다—특히 다중 플레이어 또는 리더보드 앱에 유용합니다 실시간 쿼리 활성화 를 위해 앱의 서버 설정 에서 back4app을 사용하세요 구독 초기화 let subscription = gamescore query("score" > 1000) subscribecallback { event in switch event { case created(let score) print("new high score created \\\\(score)") case updated(let score) print("high score updated \\\\(score)") case deleted(let score) print("high score removed \\\\(score)") default break } } 3단계 – acl 및 clp를 통한 보안 적용 개요 back4app은 acls (액세스 제어 목록) 및 clps (클래스 수준 권한)을 사용하여 데이터를 보호합니다 이를 사용하여 객체 또는 클래스 수준에서 읽기/쓰기 규칙을 정의하십시오 클래스 수준 권한 데이터베이스로 이동 , 클래스를 선택하십시오 (예 gamescore) “보안” 클릭 또는 “클래스 수준 권한” 누가 읽고, 쓰고, 삭제할 수 있는지 설정 (예 인증된 사용자만) 코드에서의 acl var gamescore = gamescore() gamescore score = 500 // restrict read/write to only the current user var acl = parseacl() if let user = try? await user current() { acl setreadaccess(user user, value true) acl setwriteaccess(user user, value true) } gamescore acl = acl 4단계 – 클라우드 코드 함수 작성 클라우드 코드란? 클라우드 코드는 클라이언트에서 중요한 로직을 안전한 서버 측 코드로 오프로드할 수 있게 해줍니다 이는 비즈니스 규칙, 데이터 검증 또는 tvos 앱에서 비밀을 노출하지 않고 제3자 통합을 위한 훌륭한 방법입니다 예제 함수 당신의 main js parse cloud define("awardbonus", async (request) => { const { objectid, bonus } = request params; const query = new parse query("gamescore"); const gamescore = await query get(objectid, { usemasterkey true }); gamescore increment("score", bonus); await gamescore save(null, { usemasterkey true }); return gamescore; }); 배포 back4app cli b4a configure accountkey b4a deploy 또는 back4app dashboard → cloud code → functions → main js swift에서 호출하기 import parseswift func awardbonusscore(objectid string, bonus int) async { do { let result = try await parsecloud callfunction("awardbonus", with \[ "objectid" objectid, "bonus" bonus ]) print("updated score \\\\(result)") } catch { print("error awarding bonus \\\\(error)") } } npm 모듈 당신의 package json , 의존성을 추가하세요 { "dependencies" { "axios" "^0 27 0" } } 그런 다음 main js 에서 요구하거나 가져와서 cloud code에서 사용하세요 5단계 – 인증 구성 back4app에서 사용자 인증 tvos 앱은 종종 사용자 데이터 동기화 또는 로그인이 필요합니다 parse의 parseuser 는 안전한 가입, 로그인, 세션 및 역할 기반 액세스를 제공합니다 struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // essential var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } 가입 / 로그인 func signupuser() async { var newuser = user() newuser username = "tvuser" newuser password = "secret" newuser email = "user\@example com" do { try await newuser signup() print("sign up successful ") } catch { print("error signing up \\\\(error)") } } func loginuser() async { do { let loggedin = try await user login(username "tvuser", password "secret") print("logged in as \\\\(loggedin username ?? "")") } catch { print("login error \\\\(error)") } } 소셜 로그인 구성 facebook 또는 apple 로그인 https //www back4app com/docs/platform/sign in with apple 그런 다음 계정을 연결합니다 try await user link(with apple(idtoken "token", rawnonce "nonce")) 6단계 – 파일 저장 처리 파일 저장 설정 사용자 이미지, 게임 재생, 또는 앱 자산을 parsefile 사용하여 업로드합니다 let filedata = data( ) // e g image bytes let file = parsefile(name "preview\ png", data filedata) do { let savedfile = try await file save() print("file uploaded \\\\(savedfile url)") } catch { print("error uploading file \\\\(error)") } 예시 객체에 파일 첨부 struct gamemedia parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var screenshot parsefile? } 보안 고려사항 파일 참조를 보호하기 위해 clp 또는 acl을 사용하십시오 파일의 직접 url은 파일 보안 https //www back4app com/docs/security/parse security 을 활성화하지 않으면 공개적으로 접근 가능할 수 있습니다 7단계 – 이메일 확인 및 비밀번호 재설정 개요 이메일 확인은 사용자 이메일 계정 소유를 확인하는 데 도움이 됩니다 비밀번호 재설정은 계정 접근을 회복하는 안전하고 사용자 친화적인 방법을 제공합니다 back4app 대시보드 구성 앱에서 → 앱 설정 → 이메일 이메일 확인 또는 비밀번호 재설정 을 활성화합니다 이메일 템플릿을 사용자 정의합니다 코드 구현 func requestpasswordreset(for email string) async { do { try await user passwordreset(email email) print("password reset link sent ") } catch { print("error requesting password reset \\\\(error)") } } 8단계 – 클라우드 작업으로 작업 예약하기 클라우드 작업 오래된 데이터 정리 또는 월간 업데이트 이메일 발송과 같은 반복 작업을 자동화합니다 parse cloud job("cleanupoldscores", async (request) => { const now = new date(); const thirtydaysago = new date(now 30 24 60 60 1000); const query = new parse query("gamescore"); query lessthan("createdat", thirtydaysago); const oldscores = await query find({ usemasterkey true }); await parse object destroyall(oldscores, { usemasterkey true }); return `deleted ${oldscores length} old scores `; }); “ back4app 대시보드 → 앱 설정 → 서버 설정 → 백그라운드 작업 ”에서 “cleanupoldscores”를 매일 실행되도록 예약합니다 9단계 – 웹훅 통합 정의 웹훅 은 back4app 앱이 외부 서비스에 이벤트를 전송할 수 있도록 합니다 이는 slack에 알림을 보내거나, stripe에 결제 업데이트를 하거나, 서버에 분석 데이터를 전송하는 것일 수 있습니다 구성 back4app 대시보드에서 더보기 → 웹훅 → 웹훅 추가 엔드포인트(예 https //myserver com/webhook endpoint )와 트리거(객체 업데이트, 새 레코드 등)를 지정합니다 예시 새로운 최고 점수가 생성될 때 slack에 알림을 보냅니다 parse cloud aftersave("gamescore", async (request) => { const score = request object get("score"); await sendtoslack(`a new high score of ${score} was posted!`); }); 10단계 – back4app 관리 패널 탐색 찾는 방법 “ back4app admin app ”은 사용자 친화적이고, “ 모델 중심 ”의 대시보드로 데이터 관리, crud 수행 또는 클래스 편집을 할 수 있습니다—직접 데이터베이스 쿼리가 필요하지 않습니다 “ 앱 대시보드 ” → “ 더보기 ” → “ 관리 앱 ”을 통해 활성화하세요 기능 활성화되면 팀원이나 클라이언트를 초대하여 데이터를 관리하고, 로그를 확인하거나 푸시 알림을 조정할 수 있습니다—본질적으로 그들에게 “ tvos 앱 ”의 백엔드에 대한 직접적인 포털을 제공합니다 결론 이 포괄적인 튜토리얼을 따라함으로써, 당신은 안전한 백엔드를 생성했습니다 back4app을 사용하여 tvos 앱을 위한 데이터베이스를 구성했습니다 클래스, 데이터 유형 및 관계를 포함하여 실시간 쿼리를 설정했습니다 즉각적인 변화를 반영하기 위해 보안을 적용했습니다 acl 및 clp를 통해 클라우드 코드를 구현했습니다 맞춤형 비즈니스 로직 및 통합을 위해 인증을 활성화했습니다 이메일 확인 및 비밀번호 재설정을 통해 파일 업로드를 처리했습니다 선택적 보안 제어와 함께 클라우드 작업을 예약했습니다 정기 작업을 위해 웹훅을 사용했습니다 외부 서비스와 통합하기 위해 관리 패널을 탐색했습니다 데이터를 관리하고 모니터링하기 위해 이제 풍부하고, 고품질 apple tv 경험을 구축할 준비가 되었습니다 당신의 앱은 구축되었습니다 강력한 기반 위에—당신의 tvos 앱 아이디어를 현실로 바꾸는 것을 즐기세요! 다음 단계 tvos ui 개선 포커스 기반 내비게이션, 대화면 사용자 흐름 및 app store 모범 사례를 통합하세요 보안 강화 역할 기반 acl, 다단계 인증 또는 고급 암호화를 추가하세요 기술 향상 오프라인 캐싱 또는 맞춤형 분석과 같은 더 고급 parse swift 기능을 탐색하세요 공식 문서 확인 back4app 문서 https //www back4app com/docs 및 apple tvos 문서 https //developer apple com/tvos/ 를 통해 더 깊은 지식을 얻으세요 수익화 구독 또는 유료 시청을 고려하여 스트리밍 비즈니스 잠재력을 확장하세요 이 가이드의 기본 사항을 바탕으로, 새로운 기능을 혁신하고 통합할 수 있습니다 tvos 앱 을 다음 단계로 끌어올리는 데 행운을 빕니다!