# iOS 무료 개발자 계정 7일 제한 & AltServer 가이드 React Native나 Swift로 iOS 앱을 개발할 때, 유료 개발자 계정($99/년) 없이도 실제 기기에서 테스트할 수 있다. 하지만 무료 계정에는 **7일 제한**이라는 큰 제약이 있다. 이 글에서는 7일 제한의 정확한 의미와 데이터 관리 방법, 그리고 AltServer를 활용한 해결책을 정리한다. --- ## 1. 무료 Apple 개발자 계정의 7일 제한 ### 제한 사항 요약 | 항목 | 무료 계정 | 유료 계정 ($99/년) | |------|----------|-------------------| | 앱 유효 기간 | 7일 | 1년 | | 동시 설치 가능 앱 수 | 3개 | 무제한 | | Push Notification | ❌ | ✅ | | Apple Pay | ❌ | ✅ | | App Store 배포 | ❌ | ✅ | ### 7일이 지나면 어떻게 되나? - 앱 아이콘을 눌러도 **실행되지 않음** - "이 앱은 더 이상 사용할 수 없습니다" 같은 메시지 표시 - Xcode에서 **다시 빌드하여 설치**해야 사용 가능 --- ## 2. 앱 데이터(JSON 파일 등)는 어떻게 되나? 이 부분이 가장 헷갈리는 부분이다. 결론부터 말하면: ### 데이터가 유지되는 경우 > **앱을 직접 삭제하지 않는 한 데이터는 계속 유지됨** - Xcode로 같은 Bundle ID로 다시 빌드 → 기존 앱 위에 덮어쓰기 - AltServer로 재서명 → 앱은 그대로, 인증서만 갱신 - **7일 만료 후에도 앱 자체는 남아있음** (실행만 안 될 뿐) - 만료 상태에서 재빌드/재서명하면 데이터 그대로 유지 ### 데이터가 삭제되는 경우 > **오직 다음 두 가지 경우에만 데이터 삭제** - 앱 아이콘 길게 눌러서 **직접 삭제** - **아이폰 초기화** ### 핵심 정리 ``` ┌─────────────────────────────────────────────────────────────┐ │ 앱 만료 → 재빌드/재서명 → 데이터 유지 ✅ │ │ 앱 직접 삭제 또는 아이폰 초기화 → 데이터 삭제 ❌ │ └─────────────────────────────────────────────────────────────┘ ``` **중요**: 7일 만료는 앱 실행만 막을 뿐, 앱이나 데이터를 자동으로 삭제하지 않는다. AltServer 자동 갱신이 실패해서 앱이 만료되더라도 당황하지 말고 AltStore에서 수동 갱신만 하면 된다. --- ## 3. 데이터를 안전하게 보관하는 방법 ### 방법 1: 수동 백업 (선택 사항) > **AltServer를 사용한다면 필수는 아님**. 앱을 직접 삭제하거나 아이폰을 초기화하지 않는 한 데이터는 유지되기 때문. > 다만 만약의 상황에 대비해 구현해두면 좋다. 앱 내에 **내보내기/가져오기 기능**을 구현한다. **구현 방법:** - `react-native-share`: JSON 파일을 다른 앱으로 내보내기 - `react-native-document-picker`: 외부에서 JSON 파일 가져오기 **백업 저장 위치 예시:** - iOS "파일" 앱 - iCloud Drive - 카카오톡 나에게 보내기 - 이메일 첨부 **장점:** - 서버 불필요 - 오프라인 사용 가능 - 구현이 간단 - 아이폰 초기화나 실수로 앱 삭제 시 복구 가능 **단점:** - 수동으로 백업해야 함 ### 방법 2: 클라우드 DB 사용 MongoDB Atlas, Firebase, Supabase 등을 활용한다. **장점:** - 앱 삭제/재설치해도 데이터 유지 - 여러 기기에서 동기화 가능 **단점:** - 인터넷 연결 필수 - 보안 고려 필요 (앱에서 직접 DB 연결 시 연결 문자열 노출 위험) - 중간 API 서버 구축 권장 (예: Vercel + Next.js API Routes) **보안 관련 참고:** - 개인용 앱이고 민감한 데이터가 아니라면 직접 연결도 가능 - 단, 앱 코드에 DB 연결 문자열이 포함되므로 공개 배포 시 주의 - GitHub에 올리거나 배포할 계획이 있다면 반드시 API 서버 사용 --- ## 4. AltServer란? AltServer는 **무료 개발자 계정의 7일 제한을 실질적으로 해결**해주는 도구다. ### 기본 정보 - **출시일**: 2019년 9월 28일 - **개발자**: Riley Testut - **개발 배경**: Apple이 닌텐도 에뮬레이터 Delta를 App Store에서 거부하자, Xcode의 7일 테스트 기능을 자동화하기 위해 개발 - **다운로드 수**: 2022년 기준 150만 이상 - **공식 사이트**: https://altstore.io ### 작동 원리 AltServer는 해킹이나 탈옥이 아니다. Apple의 공식 개발자 사이닝 시스템을 **그대로 이용**한다. **수동으로 7일마다 해야 하는 작업:** 1. Mac/Windows에 아이폰 연결 2. Xcode (Mac) 또는 iTunes (Windows) 실행 3. 앱을 다시 빌드하여 기기에 설치 4. Apple 서버에서 새 인증서 받아서 앱에 서명 **AltServer가 자동화하는 부분:** 1. 같은 와이파이 네트워크에서 원격으로 처리 2. Apple 서버에 자동으로 인증 요청 3. 앱 재서명 후 아이폰에 덮어쓰기 설치 4. 백그라운드에서 7일 안에 알아서 갱신 > **핵심**: Xcode로 수동으로 하는 것과 **완전히 동일한 작업**을 자동화한 것 ### 합법성 - **불법 아님**: Apple 시스템을 해킹하거나 우회하는 게 아님 - Apple이 허용하는 정상적인 개발자 사이닝 기능을 이용 - Apple이 공식적으로 금지하지는 않음 (좋아하지도 않음) - 개인 테스트용으로 사용하는 것은 전혀 문제없음 --- ## 5. AltServer 설치 가이드 ### 필요한 것 - **Mac** 또는 **Windows PC** - **iPhone/iPad** - **같은 와이파이 네트워크** ### Windows 설치 시 주의사항 > ⚠️ **중요**: iTunes와 iCloud는 반드시 **Apple 공식 사이트**에서 다운로드 > Microsoft Store 버전은 작동하지 않음 **다운로드 링크:** - iTunes: https://www.apple.com/itunes/ - iCloud: https://support.apple.com/icloud ### 설치 과정 1. **AltServer 다운로드** - https://altstore.io 에서 OS에 맞는 버전 다운로드 2. **AltServer 설치 및 실행** - Mac: AltServer.app 실행 → 메뉴바에 아이콘 표시 - Windows: setup.exe 실행 → 시스템 트레이에 아이콘 표시 3. **AltStore 설치** - 아이폰을 USB로 연결 (처음 한 번만) - AltServer 아이콘 클릭 → Install AltStore → 기기 선택 - Apple ID 입력 (앱 서명용, AltStore에 저장되지 않음) 4. **아이폰에서 신뢰 설정** - 설정 → 일반 → VPN 및 기기 관리 → 개발자 앱 → 신뢰 5. **앱 설치** - .ipa 파일을 AltStore로 열어서 설치 - 또는 AltStore 앱 내에서 .ipa 파일 선택 --- ## 6. AltServer 자동 갱신 조건 자동 갱신이 작동하려면 다음 조건이 **모두** 충족되어야 한다: | 조건 | 설명 | |------|------| | 같은 와이파이 | 아이폰과 PC가 동일 네트워크에 연결 | | PC 켜짐 | 절전 모드 아님, 정상 작동 중 | | AltServer 실행 중 | 백그라운드에서 실행 상태 유지 | ### 자동 갱신 실패 시 다음 상황에서 자동 갱신이 실패할 수 있다: - PC가 꺼져있거나 절전 모드 - 아이폰과 PC가 다른 와이파이 - AltServer가 종료됨 **해결 방법:** - AltStore 앱 열기 → My Apps → 앱 옆의 갱신 버튼 터치 - 7일 안에 한 번만 성공하면 되므로 치명적이지 않음 > **중요**: 갱신 실패로 앱이 만료되더라도 **데이터는 사라지지 않는다**. 앱이 실행 안 되는 것뿐이니 당황하지 말고 AltStore에서 수동 갱신만 하면 된다. ### 갱신 주기 - 7일마다 갱신 필요 - 갱신 시점부터 다시 7일 카운트 시작 - 예: 3일 사용 후 갱신 → 그 시점부터 다시 7일 --- ## 7. React Native 앱을 AltServer로 관리하기 ### .ipa 파일이란? .ipa 파일은 iOS 앱 설치 파일이다. 소스 코드를 **빌드(컴파일) + 패키징**해서 만든다. 한 번 빌드해두면 앱 코드 수정이 없는 한 계속 재사용 가능하다. ### .ipa 파일 생성 방법 #### 방법 1: EAS Build (맥북 없이 가능) ⭐ 추천 Expo 프로젝트라면 **EAS (Expo Application Services)**를 사용해서 클라우드에서 빌드할 수 있다. 맥북이 없어도 iOS .ipa 파일을 만들 수 있다. ```bash # EAS CLI 설치 npm install -g eas-cli # 로그인 eas login # iOS 빌드 (Apple ID 로그인 필요) eas build --platform ios ``` **필요한 것:** - Expo 프로젝트 - Apple 개발자 계정 (무료 가능) - EAS 빌드 시 Apple ID 로그인 **EAS 무료 플랜 참고:** - 빌드 큐 대기 시간이 있음 (유료 플랜은 빠름) - 월 빌드 횟수 제한 있음 #### 방법 2: Xcode (맥북 필요) 맥북이 있다면 Xcode에서 직접 빌드할 수 있다. ```bash # 1. React Native 프로젝트에서 iOS 폴더로 이동 cd ios # 2. Xcode에서 Archive 생성 # Product → Archive → Distribute App → Ad Hoc → Export # 또는 명령어로: xcodebuild -workspace YourApp.xcworkspace \ -scheme YourApp \ -configuration Release \ -archivePath build/YourApp.xcarchive \ archive xcodebuild -exportArchive \ -archivePath build/YourApp.xcarchive \ -exportPath build \ -exportOptionsPlist ExportOptions.plist ``` #### 방법 3: 기타 CI/CD 서비스 (맥북 없이 가능) 순수 React Native CLI 프로젝트(Expo 아님)라면: - **GitHub Actions + macOS runner**: 무료 티어로 가능 - **Codemagic**: CI/CD 서비스, 무료 플랜 있음 ### AltStore로 설치 1. .ipa 파일을 아이폰으로 전송 (AirDrop, 이메일 등) 2. .ipa 파일 탭 → "AltStore로 열기" 선택 3. 설치 완료 → 7일마다 자동 갱신 ### .ipa 파일 재사용 > **앱 코드를 수정하지 않았다면 .ipa 파일을 다시 빌드할 필요 없음** AltServer가 하는 일은 기존 .ipa 파일에 새 인증서로 **재서명**하는 것뿐이다. 앱 업데이트가 있을 때만 다시 빌드하면 된다. ### 앱 업데이트 시 데이터는 어떻게 되나? 기능 추가나 변경으로 새로 빌드한 .ipa 파일을 AltStore에 다시 설치하면 **데이터가 유지된다**. **조건: Bundle ID가 같아야 함** Bundle ID가 같으면 iOS가 "같은 앱의 업데이트"로 인식해서 기존 데이터 위에 덮어씌워준다. #### Bundle ID란? 앱의 고유 식별자다. Expo 프로젝트에서는 `app.json`에 정의되어 있다: ```json { "expo": { "ios": { "bundleIdentifier": "com.sangwoon.myapp" // 이게 Bundle ID } } } ``` #### Bundle ID는 언제 바뀌나? **바뀌지 않는 경우:** - EAS로 여러 번 빌드해도 유지 - 기능 추가/수정해도 유지 - 빌드 과정에서 자동으로 바뀌지 않음 **바뀌는 경우:** - `app.json`에서 직접 수정했을 때 - 완전히 새 프로젝트를 만들었을 때 > **결론**: `app.json`의 `bundleIdentifier`를 건드리지 않는 한, 앱을 몇 번 업데이트해도 데이터는 계속 유지된다. --- ## 8. Expo 프로젝트의 장점 React Native 앱을 만들 때 **Expo로 시작하면** 여러 가지 편리한 서비스를 사용할 수 있다. ### EAS (Expo Application Services) | 서비스 | 설명 | |--------|------| | **EAS Build** | 클라우드 빌드 (맥북 없이 iOS/Android 빌드 가능) | | **EAS Update** | 앱 재빌드 없이 JS 코드 업데이트 (OTA) | | **EAS Submit** | App Store / Play Store에 자동 제출 | ### 기타 Expo 장점 - **Expo Go**: 개발 중 실시간 테스트 (빌드 없이 바로 확인) - **풍부한 라이브러리**: 카메라, 위치, 알림 등 네이티브 기능을 쉽게 사용 - **네이티브 모듈 지원**: 예전엔 제약이 많았지만, 지금은 대부분의 네이티브 모듈 사용 가능 > **결론**: 특별한 이유가 없다면 React Native 프로젝트는 **Expo로 시작하는 것을 추천** --- ## 9. 정리: 나에게 맞는 방법 선택하기 ### 시나리오별 추천 | 상황 | 추천 방법 | |------|----------| | 개인용, 가끔 사용 | 수동 백업 + Xcode 재빌드 | | 개인용, 자주 사용 | AltServer | | 여러 기기 동기화 필요 | 클라우드 DB | | 앱 배포 예정 | 유료 개발자 계정 ($99/년) | ### 최종 체크리스트 - [ ] AltServer 설치 및 설정 완료 - [ ] PC 시작 시 AltServer 자동 실행 설정 - [ ] (선택) 앱에 내보내기/가져오기 기능 구현 (만약의 상황 대비) - [ ] **앱을 직접 삭제하지 않도록 주의!** --- ## 참고 자료 - [AltStore 공식 사이트](https://altstore.io) - [AltStore FAQ](https://faq.altstore.io) - [Apple Developer Program](https://developer.apple.com/programs/)