iOS 광고 추적 권한 리젝 대응과 기능 결함 일괄 수정
목차
한 번 App Store 심사에 걸리면 진짜 힘들다. 이번 커밋은 그 고민을 모두 담은 작업이었다. iOS의 ATT(Apple Tracking Transparency) 리젝에 맞춰 권한 선언을 정리하고, 동시에 발견된 여러 기능 결함까지 묶어서 수정했다.
ATT, 권한 선언과 실제 구현의 간극
iOS 14.5 이후 Apple은 사용자의 광고 추적 권한을 명시적으로 요청하도록 강제했다. 단순 권한 요청이 아니라 NSUserTrackingUsageDescription 같은 프라이버시 설명을 Info.plist에 반드시 등재해야 하고, 실제 추적 기능이 있을 때만 요청 화면을 띄워야 한다. 심사팀이 체크하는 항목이 많아서 한두 가지 빠지면 바로 리젝이다.
이번 작업에서 깨달은 게, 권한 선언과 권한 사용이 맞물려야 한다는 점이었다.
Info.plist (권한 선언)
├─ NSUserTrackingUsageDescription
├─ NSLocationWhenInUseUsageDescription
└─ ...
Runner.entitlements (앱이 가질 수 있는 권한 목록)
└─ aps-environment, push 기능 등
project.pbxproj (빌드 설정)
└─ Signing, Capability 활성화 필수
이 셋 중 하나만 빠지거나 어긋나도 런타임 에러나 심사 리젝이 난다.
코드 레벨에서의 실제 구현
권한 파일만 수정했으면 표면적으로는 리젝이 풀렸을 텐데, api_client.dart와 app.dart 수정이 필요했다는 건 더 깊은 문제가 있었다는 뜻이다.
예를 들어:
- api_client.dart: 네트워크 요청 시 권한 확인 로직이 빠져 있거나, iOS에서만 발생하는 예외 처리 부족
- app.dart: 앱 초기화 단계에서 ATT 권한 요청 타이밍이 잘못되었거나, 권한 거부 후 Fallback 로직 누락
앱의 생명주기 어느 시점에 권한을 요청할지가 정말 중요하다. 너무 이르면 사용자가 거부하고, 너무 늦으면 그 권한이 필요한 기능을 미리 썼다고 심사팀이 판단해서 리젝한다.
크로스플랫폼에서의 일관성
흥미로운 건 Android 설정도 함께 수정됐다는 것.
| 항목 | iOS | Android |
|---|---|---|
| 권한 선언 | Info.plist | AndroidManifest.xml |
| 권한 확인 | NSUserTracking 요청 | QUERY_ALL_PACKAGES, 기타 manifest 권한 |
| 빌드 설정 | .pbxproj, entitlements | build.gradle, manifest |
iOS만 리젝당했어도 Android 사용자 경험이 다르면 안 된다. 예를 들어 iOS에서는 "추적 허용" 팝업이 뜨는데 Android에서는 조용히 넘어가면, 마케팅 팀과 애널리틱스 팀의 혼란이 생긴다. 그래서 양쪽 권한 로직과 타이밍을 맞춰야 했다.
번들로 수정한 이유
"기능 결함 일괄 수정"이라는 표현이 중요한데, 단순히 권한 문제뿐 아니라 실제 동작하지 않던 기능들도 발견됐다는 뜻이다.
리젝 피드백을 받으면 해당 부분만 수정하기 쉽지만, 이번처럼 테스트하는 과정에서:
- API 호출이 권한 부족으로 조용히 실패하는 부분
- 에러 핸들링이 누락된 부분
- 플랫폼 간 동작 편차
같은 여러 결함이 한 번에 드러났다. 배포 전에 이런 것들을 모두 잡는 게 좋으니까 같은 커밋에 싸그리 묶었다. 그게 더 깔끔하고, 향후 리버트가 필요할 때도 원자성(atomicity)을 유지할 수 있다.
배운 점
앱을 배포할 때마다 느끼는 건데, OS 정책 변화에 대응하는 건 백엔드 배포보다 복잡하다. 백엔드는 내 서버 내 맘대로지만, 앱스토어나 구글플레이는 심사 기준이 자주 바뀌고, 권한 정책도 해마다 강해진다.
다음 번엔:
- 배포 전 체크리스트를 만들어서 권한 선언→코드 구현→크로스플랫폼 테스트를 자동화하기
- 권한 관련 변경은 단순 설정 수정이 아니라 전 과정 통합 테스트 필수
- 팀에 "새 iOS 권한 요구사항" 같은 정책 변화를 공지하는 프로세스 추가
App Store 리젝은 배포 일정을 밀지만, 잡힌 문제들을 제대로 수정하면 향후 사용자 신뢰도 올라간다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.