한눈표
| 구분 | 꼭 확인 | 왜 중요한가 |
| iOS(Game Center) | Xcode Game Center Capability/Entitlement 추가 | 빌드에 권한 누락되면 제출/검수 단계에서 바로 차단·반려됩니다. |
| App Store Connect에서 Recurring Leaderboard 설정(주기·기간·시작시각) | 최소 5분 ~ 최대 30일, 서로 겹치면 안 됨. 설정 오류/중복 구간은 리더보드가 안 돌아가요. | |
| (앱에 다른 제3자 로그인이 있다면) Sign in with Apple 제공 | 앱에 구글/페북 등 타사 로그인이 있으면 Sign in with Apple을 함께 요구합니다(리젝 사유 4.8). Game Center만 쓰는 게임엔 보통 해당 없음. | |
| Android(PGS) | Play Console에서 PGS 설정 + OAuth 클라이언트 + SHA-1(앱 서명용) | SHA-1을 Play App Signing 인증서로 맞추지 않으면 로그인/제출이 **개발자 오류(코드 10)**로 실패, 검수 중 재현됩니다. |
| Data safety(데이터 안전성) 폼 정확히 제출 | 모든 앱이 제출 대상. 로그인/식별자 사용 여부를 정확히 표기하지 않으면 경고·게시 중단 가능. | |
| 공통 | 오프라인/미로그인 처리(건너뛰기/재시도) | 심사 기기에서 로그인 실패/차단이 날 수 있음 → 앱이 무한 대기/강제 종료되면 반려됩니다. |
| 치트/조작 대비 기본 설정 | PGS는 Tamper protection 토글 제공. Game Center도 서버 기준 집계라 클라이언트 시계 변조에 강함. |
플랫폼별 체크리스트(실전)
iOS — Game Center
- Xcode → Signing & Capabilities → Game Center 켜기(Entitlement 포함 빌드인지 확인).
- App Store Connect → Game Center → Leaderboards에서 Recurring 생성: 시작 시각/타임존·주기·지속시간이 서로 겹치지 않도록 설정. (5분~30일 범위)
- 로그인 실패/취소 시 게임 진행 가능(스킵·재시도 버튼).
- 앱에 구글/페북 같은 로그인을 추가한다면 Sign in with Apple도 같이 넣기(가이드라인 4.8).
- 심사용 계정 없이도 동작하도록 처리(리더보드 제출 실패 시도 우아한 실패).
Android — Google Play Games Services (PGS)
- Play Console → Play Games Services에서 게임/리더보드 생성.
- OAuth 클라이언트에 앱의 SHA-1을 Play App Signing 인증서 기준으로 추가(업로드 키와 다를 수 있음). 로그인 개발자 오류 코드 10 방지.
- Data safety 폼에서 로그인/식별자 사용 여부를 정확히 기재.
- PGS Tamper protection 켜기(리더보드 단위).
- 로그인 실패/미설치 환경에서도 게임은 진행되고, 랭킹 기능만 제한.
자주 나는 반려/장애 사례 (회피법)
- iOS: Game Center 권한 누락 → 빌드에 entitlement가 안 들어감. Xcode에서 Capability 추가 후 프로비저닝 프로파일까지 반영해 다시 서명.
- iOS: 리더보드 주기 겹침/잘못 설정 → 점수 집계가 안 됨. 겹치지 않게(Occurrence는 서로 독립) 재설계.
- iOS: 타사 로그인만 있고 ‘Sign in with Apple’ 없음 → 가이드라인 4.8으로 반려. Game Center만 쓰는 게임이면 보통 비대상.
- Android: 디버그에선 되는데 릴리스에서 로그인 실패 → SHA-1을 업로드 키로 등록해둔 실수. Play App Signing 인증서로 교체.
- Android: Data safety 부정확 → 경고/게시중단. 폼 재점검.
UX 권장(검수 친화)
- 첫 실행에 강제 로그인 유도 금지: “나중에” 버튼 제공, 게임 핵심 플레이 가능.
- 리더보드 버튼을 눌렀을 때만 로그인 유도(지연 인증).
- 로그인/제출 실패 시 짧은 안내 + 재시도(무한 로딩 금지).
- 시간 조작/네트워크 끊김에도 크래시 없이 복구.
1) 용어 & 제출처
| 항목 | 어디에 쓰는 말? | 제출/입력 위치 | 사용자에게 어떻게 보임 |
| Data safety 폼 | Google Play 전용 개인정보 공개 | Play Console → App content → Data safety | 플레이 스토어 앱 상세의 “Data safety” 섹션 |
| App Privacy 라벨 | Apple App Store 전용 개인정보 공개 | App Store Connect → App Privacy | 앱스토어 상품 페이지의 “App Privacy” 라벨 |
2) 무엇을 적나(핵심 항목)
| 공통 주제 | Google Play(Data safety) | App Store(App Privacy) |
| 수집 데이터 유형 | 예: 식별자(플레이어 ID, 표시명), 진단/사용 데이터 등 실제 구현 기준 | 예: Identifiers, Usage Data 등 실제 구현 기준 |
| 수집 목적 | 예: 앱 기능(리더보드), 계정 관리, 분석 등 | 목적/용도 항목에서 선택 |
| 전송/공유 | 제3자 SDK(예: Unity Gaming Services)로의 전송 여부 표기 | “데이터가 사용자와 링크되나?” “추적에 쓰이나?” 여부 선택 |
| 보안 관행 | 전송 시 암호화, 데이터 삭제 방식 등 | 유사 항목 존재 |
| 서드파티 SDK | 포함되는 SDK의 수집/전송을 포함해서 자가 신고 | 동일 |
정확한 선택지는 네가 실제로 수집·전송하는 항목 기준으로 체크해야 함(코드/SDK 설정과 불일치하면 반려·경고 가능).
3) UGS를 쓰는 경우 메모(예시 가이드)
- 대개 식별자(UGS Player ID, 표시명), **사용 데이터(랭킹 제출 이벤트)**가 해당될 수 있음.
- 목적은 앱 기능(랭킹/계정) 중심.
- UGS(서드파티)로 데이터 전송됨을 명시.
- 전송 암호화 사용(HTTPS) 체크.
- iOS 라벨에선 링크/추적 여부를 정의에 따라 선택.
- 세부 문구·체크박스는 시기에 따라 바뀌니, 제출 직전 콘솔 폼을 하나씩 대조 확인!
4) 자주 걸리는 포인트 & 회피 팁
| 카테고리 | 흔한 실수 | 예방/해결 |
| 폼 표기(양 스토어) | 수집·전송 항목 누락/오표기 | 실제 코드/SDK 설정과 대조표 만들어 항목별 체크 |
| 동의/거부 UX | 로그인 실패/거부 시 앱이 멈춤 | 스킵·재시도 버튼, 타임아웃 필수 |
| SDK 추가 후 미갱신 | UGS/분석 SDK 추가했는데 폼 미수정 | SDK 변경 시 즉시 폼 갱신 |
| 오프라인 처리 부재 | 네트워크 끊기면 무한 로딩 | 오프라인 감지 → 로컬 큐잉 후 재시도 |
| 에러 미처리 | 예외 던지고 종료 | 모든 네트워크 호출에 try/catch + 사용자 메시지 |
5) “네트워크 실패 핸들링” 체크리스트 (심사 친화)
- 지연 인증: 랭킹 버튼을 눌렀을 때만 로그인 시도(첫 실행 강제 로그인 X)
- 타임아웃 + 메시지 + 재시도: 무한 스피너 금지
- 오프라인 큐잉: 제출 실패 시 로컬 저장 → 나중 자동 재시도
- 지수 백오프: 1s→2s→4s로 짧게 재시도 후 사용자에 맡김
- 앱 플레이 가능: 로그인 실패/취소해도 게임은 정상 진행
- 전역 예외 포착: SDK 호출은 전부 try/catch
6) 10분 점검표
- Play Data safety 작성 완료(수집/목적/공유/보안)
- App Store App Privacy 라벨 작성/갱신 완료
- (네이티브 쓰는 경우) iOS Game Center Capability / Android OAuth + SHA-1 정확
- 로그인 실패·취소 시 스킵/재시도 존재
- 오프라인 제출 보류 저장 & 앱 재시작 시 플러시
- 서버/API 장애 시 사용자 메시지 제공
- 개인정보/보안 고지(암호화, 삭제 정책 등) 콘솔 폼과 일치
- SDK 변경 시 폼 동기화 완료
- 테스트 기기에서 비행기 모드/네트워크 토글로 실패 경로 검증
- 스토어 스크린샷/설명 내 개인정보 주장과 폼 내용 간 모순 없음
'코딩 > Unity' 카테고리의 다른 글
| Unity : Unity Gaming Services (UGS) (0) | 2025.09.27 |
|---|---|
| Unity : Audio Sources 설정값 (2) | 2025.09.12 |
| Unity : Material, Texture, Mask, Shader 개념 비교 (0) | 2025.09.12 |
| Unity : Physic Material, Material (3) | 2025.08.07 |