iOS 앱 심사 거절 문제 해결하기 | Legal - Privacy - Data Use and Sharin
오늘, iOS 앱 심사를 진행하면서 예상치 못한 문제가 발생했다. Apple에서 보내온 메시지에 따르면, 내가 제출한 앱이 App Tracking Transparency(ATT) 프레임워크를 사용하지 않았다는 이유로 리젝된 것이다. 심사 거절 사유는 개인정보 보호 가이드라인 5.1.2 - Legal - Privacy - Data Use and Sharing에 위배되었기 때문이라는 내용이었다.
Apple의 메시지를 자세히 살펴보니, App Store Connect에 등록된 앱의 개인정보 보호 정보에 따르면 앱이 사용자 ID와 기타 콘텐츠를 수집해 사용자 활동을 추적하고 있다고 표시되어 있었다. 하지만, App Tracking Transparency(ATT) 프레임워크를 사용해 사용자의 동의를 받지 않았기 때문에 이 문제가 발생한 것이다. Apple은 사용자 활동 추적을 위해서는 반드시 ATT 프레임워크를 통해 사용자에게 명시적인 허가를 받아야 한다고 설명했다.
Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
The app privacy information provided in App Store Connect indicates the app collects data in order to track the user, including User ID and Other User Content. However, the app does not use App Tracking Transparency to request the user's permission before tracking their activity.
Apps need to receive the user’s permission through the AppTrackingTransparency framework before collecting data used to track them. This requirement protects the privacy of users.
Next Steps
Here are three ways to resolve this issue:
- If the app does not currently track, update the app privacy information in App Store Connect. You must have the Account Holder or Admin role to update app privacy information.
- If this app does not track on the platform associated with this submission, but tracks on other platforms, notify App Review by replying to the rejection in App Store Connect.
- If the app tracks users on all supported platforms, the app must use App Tracking Transparency to request permission before collecting data used to track. When resubmitting, indicate in the Review Notes where the permission request is located.
Note that if the app behaves differently in different countries or regions, you should provide a way for App Review to review these variations in the app submission. Additionally, these differences should be documented in the Review Notes section of App Store Connect.
Resources
- Tracking is linking data collected from the app with third-party data for advertising purposes, or sharing the collected data with a data broker. Learn more about tracking.
- See Frequently Asked Questions about the requirements for apps that track users.
- Learn more about designing appropriate permission requests.
거절 사유와 원인
Apple의 메시지를 정리하면 다음과 같다.
- 앱이 사용자 데이터를 추적하는 것으로 보고되었지만, 이를 위해 ATT 프레임워크를 사용해 추적 허가를 요청하지 않았다.
- Apple의 개인정보 보호 가이드라인 5.1.2에 따르면, 앱이 데이터를 수집하거나 사용자 활동을 추적할 때는 반드시 App Tracking Transparency 프레임워크를 통해 명확한 동의를 받아야 한다.
Apple은 문제 해결을 위해 세 가지 방법을 제시했다.
해결 방법
1. 앱이 실제로 사용자 추적을 하지 않는 경우
만약 앱이 실제로 사용자를 추적하지 않는다면, App Store Connect에서 개인정보 보호 정보를 수정해야 한다. 이 작업은 Account Holder나 Admin 권한을 가진 계정에서만 가능하다.
2. 특정 플랫폼에서만 추적하는 경우
만약 앱이 iOS에서는 사용자 추적을 하지 않고, 다른 플랫폼에서만 추적한다면, App Store Connect에서 App Review 팀에 이 사실을 알리는 답장을 보내야 한다.
3. 모든 플랫폼에서 사용자 추적을 하는 경우
만약 모든 플랫폼에서 사용자를 추적한다면, App Tracking Transparency(ATT) 프레임워크를 구현하여 사용자에게 추적 허가를 요청해야 한다. 이때, 앱을 다시 제출할 때는 심사 노트에 추적 동의 요청이 어디에 위치하는지 명시해야 한다.
또한, Apple은 만약 앱이 지역별로 다른 방식으로 작동한다면, 이 변동 사항을 App Review에서 확인할 수 있도록 안내해야 하며, 심사 노트에도 이를 설명해야 한다고 언급했다.
해결 과정
1. 앱이 실제로 추적을 하지 않는지 확인
내가 만든 앱은 Django로 개발된 웹 포럼 사이트를 웹뷰로 불러오는 iOS 앱이다. 앱이 사용자 데이터를 실제로 추적하고 있는지 먼저 확인하기로 했다. 추적에 해당하는 활동은 사용자의 데이터를 광고 목적으로 사용하거나, 외부 데이터와 연결하여 프로파일을 만드는 경우이다. Google Analytics, Facebook Pixel 같은 추적 도구가 있을 수 있다. 만약 이러한 도구가 웹사이트에 포함되어 있다면, 추적하는 것으로 간주될 수 있다.
다행히도, 내가 만든 앱에서는 추적 도구를 사용하고 있지 않았다. 따라서 App Store Connect에 등록된 개인정보 보호 정보가 잘못되었다는 결론을 내릴 수 있었다.
2. App Store Connect에서 개인정보 보호 정보 수정
사용자 추적이 이루어지지 않는다는 사실을 확인했으니, App Store Connect에 등록된 개인정보 보호 정보를 수정하기로 했다.
App Store Connect에 로그인한 후, 앱의 개인정보 보호 정보(Privacy Information) 섹션으로 이동했다.
사용자 추적 항목을 "수집하지 않음"으로 수정하고, 추적이 이루어지지 않는다는 사실을 명시했다.
이 작업은 앱 소유자나 관리자 권한을 가진 계정에서만 가능하기 때문에, 내가 해당 권한을 가지고 있는지 확인 후 진행했다.
3. 앱이 실제로 사용자 추적을 해야 하는 경우
만약 내가 만든 앱이 사용자 데이터를 실제로 추적하고 있다면, 반드시 App Tracking Transparency(ATT) 프레임워크를 구현해야 한다. 웹뷰로 앱을 만들었더라도, iOS 앱 자체에서 사용자 추적 여부에 대한 동의를 받아야 한다는 점이 중요하다.
ATT 프레임워크는 사용자가 추적에 동의해야만 데이터를 수집할 수 있도록 만들어졌으며, 이를 구현하려면 앱 내에서 추적 허가 요청 팝업을 띄워야 한다. 이 과정은 앱이 네이티브든 웹뷰를 사용하든 모두 동일하게 적용된다.
ATT 프레임워크 구현 예시
앱에서 사용자에게 추적 동의를 받기 위한 코드는 간단하다. iOS 14 이상을 사용하는 기기에서는 다음과 같은 코드를 사용해 추적 동의 요청 팝업을 띄울 수 있다.
import AppTrackingTransparency
import AdSupport
func requestTrackingPermission() {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// 사용자가 추적에 동의한 경우
print("Tracking authorized")
case .denied, .restricted, .notDetermined:
// 사용자가 추적을 허용하지 않은 경우
print("Tracking not allowed")
@unknown default:
print("Unknown status")
}
}
}
}
이 코드는 앱이 실행될 때마다 AppTrackingTransparency를 호출해 사용자의 허가를 요청한다. 사용자가 동의하지 않을 경우, 추적 도구나 쿠키를 비활성화해야 한다.
4. 웹뷰에서 ATT 프레임워크 적용
내 앱이 웹뷰(WebView)를 사용하고 있지만, iOS 앱에서도 자체적으로 사용자 추적 동의 절차를 따를 필요가 있다. 웹뷰로 로드하는 Django 사이트에서 추적 도구를 사용하고 있다면, 이를 웹뷰에서도 반영해야 하며, iOS 앱에서 ATT 프레임워크를 통해 명확한 동의를 받아야 한다.
요약
오늘 경험한 iOS 앱 심사 리젝 문제는 사용자 데이터를 추적하는 경우, App Tracking Transparency 프레임워크를 반드시 구현해야 한다는 점을 다시금 상기시켜 주었다. 해결 방법은 크게 두 가지로 나뉘었다. 앱이 실제로 사용자 데이터를 추적하지 않는다면, App Store Connect에서 개인정보 보호 정보를 수정하고 다시 제출하면 된다. 만약 데이터를 추적하고 있다면, ATT 프레임워크를 구현해 사용자의 허가를 받아야 한다.
이번 일을 계기로 앱의 개인정보 보호 관련 설정을 더 꼼꼼히 검토해야겠다고 다짐했다. Apple의 심사 기준은 엄격하지만, 결국 사용자들의 개인정보 보호를 위한 것이기 때문에 이를 잘 준수하는 것이 중요하다.
추가 리소스 및 참고 사항