내용정리
Apple은 개인정보 보호 강화를 위해
PrivacyInfo.xcprivacy파일을 도입했다. 2024년 5월 1일부터 AppStore에 앱을 제출하려면 특정 API를 사용할 경우 이에 대한 이유를 명시해야 한다.
이번에는 PrivacyInfo의 개념과 서드파티 라이브러리를 사용할 때의 관계와 설정에 대해 작성해보려고 한다.
Apple은 앱이 사용자 데이터를 수집하거나 특정 API를 사용할 때 투명성을 높이기 위해 개인정보 보호 관련 사항을 명확히 공개하도록 요구한다.
특히, 일부 API는 Required Reason API로 지정되어, 이를 사용할 경우 사용 목적을 설명해야 한다.
PrivacyInfo는 앱이 사용되는 개인정보 관련 API 및 데이터 수집 사항을 명시하는 Plist 파일이다.
이 파일에는 다음과 같은 정보가 포함된다.
NSPrivacyAccessedAPITypes:
NSPrivacyCollectedDataTypes:
**NSPrivacyTracking:
SnapKit과 같은 UI 구성용 라이브러리는 사용자 데이터를 수집하지 않으며, Required Reason API를 사용하지 않는다. 때문에 PrivacyInfo에 SnapKit과 관련된 정보를 추가할 필요는 없다.
이처럼 UI와 관련된 라이브러리로, 사용자 데이터를 수집하거나 특정 API를 사용하지 않는다면 라이브러리에 관련된 정보를 PrivacyInfo에 추가할 필요는 없다.
Firebase, Google Analytics, Facebook SDK 등과 같이 사용자 데이터를 수집하거나 서버와 통신하는 라이브러리는 PrivacyInfo에 반드시 포함해야 한다.
예시로, 프로젝트에서 Firebase를 사용했을 경우 어떻게 설정하면 되는지를 정리해 보았다.
Firebase는 여러 서비스를 제공하는데, 일부 서비스는 사용자 데이터를 수집하고 저장한다.
위의 경우 Firebase를 활용하여 데이터를 수집하는 케이스이므로 해당 정보를 PrivacyInfo에 명시해야 한다.
a. NSPrivacyAccessedAPITypes (사용하는 API 종류)
Firebase가 내부적으로 사용하는 API 중 Apple이 Required Reason API로 지정한 항목이 있다면 이를 추가해야 한다.
// PrivacyInfo 추가 예시
<key>NSPrivacyAccessedAPITypes</key>
<array>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
</array>
b. NSPrivacyCollectedDataTypes (수집하는 데이터 유형)
Firebase에서 수집하는 데이터 유형을 명시해야 한다.
// PrivacyInfo 추가 예시
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>Email</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>Location</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
</dict>
</array>
c. NSPrivacyCollectedDataTypeLinked (사용자와 데이터 연결 여부)
d. NSPrivacyCollectedDataTypeTracking (데이터 추적 여부)
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>Email</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>Location</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
</dict>
</array>
</dict>
</plist>
Firebase를 사용하는 경우 PrivacyInfo를 반드시 업데이트해야 함
Apple의 개인정보 보호 정책을 준수하지 않으면 앱 심사에서 거절될 수 있음
앱에서 수집하는 데이터를 정확히 기재해야 함
PrivacyInfo는 Apple이 요구하는 개인정보 보호 문서이다. 프로젝트에서 사용하는 API나 유저 데이터를 수집하는 코드가 있는 경우, 반드시 PrivacyInfo에 적용해 주어야 한다.
이 때, SnapKit 같은 UI 라이브러리는 사용 상황을 명시해 줄 필요가 없지만, Firebase처럼 사용자의 데이터를 수집하는 경우 PrivacyInfo에 어떻게 사용하는지 명시를 해줘야 한다.
이를 제대로 설정하지 않으면 AppStore 심사에서 거절될 가능성이 있기 때문에 주의해야 한다.
앱 배포를 하기 위해 많은 것을 알아야 하는 것을 알게되었다...