코딩/Unity

Unity : 네이티브 리더보드 붙일 때 유의사항, UGS 유의사항

americanoallday 2025. 9. 27. 15:05

한눈표

구분 꼭 확인 왜 중요한가
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-1Play 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분 점검표

  1. Play Data safety 작성 완료(수집/목적/공유/보안)
  2. App Store App Privacy 라벨 작성/갱신 완료
  3. (네이티브 쓰는 경우) iOS Game Center Capability / Android OAuth + SHA-1 정확
  4. 로그인 실패·취소 시 스킵/재시도 존재
  5. 오프라인 제출 보류 저장 & 앱 재시작 시 플러시
  6. 서버/API 장애 시 사용자 메시지 제공
  7. 개인정보/보안 고지(암호화, 삭제 정책 등) 콘솔 폼과 일치
  8. SDK 변경 시 폼 동기화 완료
  9. 테스트 기기에서 비행기 모드/네트워크 토글로 실패 경로 검증
  10. 스토어 스크린샷/설명 내 개인정보 주장과 폼 내용 간 모순 없음

'코딩 > 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