# 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/)