피드로 돌아가기
Dev.toFrontend
원문 읽기
Expo 환경 내 Game Center 연동을 위한 Local Native Module 설계 및 배포 전략
How to add Apple Game Center leaderboards to an Expo app
AI 요약
Context
Expo 기본 SDK 내 Game Center 전용 패키지 부재로 인한 기능 구현 제약 발생. Apple의 비정형적인 승인 프로세스와 OS 버전별 API 파편화로 인해 단순 라이브러리 도입 이상의 네이티브 브릿지 설계 필요.
Technical Solution
npx create-expo-module을 통한 Local Native Module 구축으로 Swift 기반 GameKit API 직접 제어- Promise 기반 호출의 한계를 극복하기 위해
onAuthStateChangedEvent-Driven 구조를 도입하여 인증 상태 동기화 최적화 hasSetHandler플래그를 통한authenticateHandler중복 할당 방지로 Promise Orphan 현상 제거#available(iOS 18.0, *)조건부 컴파일을 적용하여 하위 버전 호환성 확보 및GKGameCenterViewController진입 경로 분기 처리- Config Plugin 기반
Entitlements.plist자동 설정을 통해 Native Project 직접 수정 없는 일관된 빌드 환경 구축 - App Store Connect(ASC)의 수동 심사 요청 프로세스를 통한 Binary와 Game Center Component의 동시 배포 보장
실천 포인트
- Expo 프로젝트 내 네이티브 기능 필요 시 Local Module과 Config Plugin을 결합한 아키텍처 검토 - 비동기 콜백이 잦은 네이티브 API 연동 시 Promise와 Event Emitter를 혼합한 상태 관리 패턴 적용 - iOS 버전별 신규 API 도입 시 Fallback 전략 수립 및 조건부 컴파일 적용 여부 확인 - ASC 배포 시 Binary 외의 컴포넌트(Leaderboards 등)가 동일한 Draft Submission에 포함되었는지 최종 검증