Privacy Manifest ๋์์ ์ํด ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณด๊ณ ์ ํ๋ค.
์ฐ์ฐํ ์ฐพ์๋ techinpark๋์ privacy manifest scanner
์ด๋ ํ ํญ๋ชฉ์ ๋ํด ์์ฑํด์ผ ํ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ํ ๋ฒ ์ฌ์ฉํด ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
Privacy Manifest File
์์งํ๋ ๋ฐ์ดํฐ์ Required Reason API๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ๋ช ์ํ ํ์ผ์ด๋ค.
Property List๋ก ๊ฐ์ธ์ด ๋ง๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฟ๋ง ์๋๋ผ ํ์ฌ SDK์์๋ ์์งํ ๋ฐ์ดํฐ์ API๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด์ ๋ช ์ํด์ผ ํ๋ค.๋ํ, ์ธ๋ถ SDK ์๊ตฌ์ฌํญ์ ‘Privacy Manifest์ ์๋ช ์ด ํ์ํ SDK(SDKs that require a privacy manifest and signature)’๋ผ๊ณ ์ ํ์๋ค๋ฉด ์ธ๋ถ SDK์ Privacy manifest ํ์ผ์ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
๊ฐ์ธ ์ฑ์ Privacy Manifest File๊ณผ ์ฌ์ฉํ๋ ์ธ๋ถ SDK์ Privacy Manifest File์ ํตํฉํ์ฌ Privacy Report๋ฅผ ๋ง๋ค ์ ์๋ค. Privacy Report๋ฅผ App Store Connect์ ํจ๊ป ๋ฑ๋กํ๋ฉด ๋์ํ ์ ์๊ฒ ๋๋ค.
1. Privacy Manifest File ์์ฑํ๊ธฐ
- App Privacy ํ์ผ์ ์์ฑํ๊ธฐ + ํ๊ฒ ์ค์
- ์์ฑํ๊ฒ ๋๋ฉด PrivacyInfo.xcprivacy๋ผ๋ ํ์ผ์ด ์์ฑ๋๋ค.
2. PrivacyInfo.xcprivacy
4๊ฐ์ง์ ์์ฑ์ ์ถ๊ฐํ ์ ์๋ค.
(1) NSPrivacyTracking
- App Tracking Transparency framework์ ์ ์๋ ๋๋ก ์ถ์ ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ Boolean๊ฐ์ด๋ค.
(2) NSPrivacyTrackingDomains
- ์ถ์ ์ ์ฌ์ฉ๋๋ ์ธํฐ๋ท ๋๋ฉ์ธ์ ๋์ดํ String ๋ฐฐ์ด์ด๋ค. ๋ง์ฝ ์ ์ ๊ฐ App Tracking Transparency framework๋ฅผ ํตํด ์ถ์ ๊ถํ์ ์ฃผ์ง ์์ผ๋ฉด ์ด๋ฌํ ๋๋ฉ์ธ์ ๋ํ ๋คํธ์ํฌ ์์ฒญ์ด ์คํจํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
(3) NSPrivacyCollectedDataTypes
- Dictionary ๋ฐฐ์ด๋ก ์์งํ๋ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ํ๋ธ๋ค.
- ์๋นํ ๋ง์ ์ข ๋ฅ์ ํค๊ฐ์ด ์กด์ฌํ๋ค. ์ฐ๋ฝ์ฒ ์ ๋ณด๋ถํฐ ์์ํด ๊ฑด๊ฐ, ๊ฒฐ์ , ์์น ๋ฑ๋ฑ ์๋์ ๋งํฌ์์ ํ์ํ ๊ฒ์ด ์ด๋ค ๊ฒ์ธ์ง ์ฐพ์๋ณด์
(4) NSPrivacyAccessedAPITypes
- Dictionary ๋ฐฐ์ด๋ก ์ ๊ทผํ๋ API ํ์ ์ ๋ํ๋ธ๋ค. API ํ์ ์ Required Reason API๋ก ์ง์ ๋์ด ์๋ค.
3. ์์ง ํญ๋ชฉ ๋ํ๋ด๊ธฐ (NSPrivacyCollectedDataTypes)
- ์์งํ ๋ฐ์ดํฐ ํญ๋ชฉ๊ณผ Required Reason API์ ๋ํ ์ด์ ๋ฅผ ๋ช ์ํด์ผ ํ๋ค๊ณ ํ์ผ๋ ์์งํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ช ์ํ๋ ๋ฐฉ๋ฒ๋ถํฐ ์์๋ณด์.
- ์์งํญ๋ชฉ์ Privacy Manifest File์ NSPrivacyCollectedDataTypes๋ฅผ ํตํด ๋ํ๋ผ ์ ์๋ค. ๋์ ๋๋ฆฌ ๋ฐฐ์ด ํ์ ์ผ๋ก, ํค๊ฐ์ผ๋ก๋ ์๋์ ๊ฐ์ ํญ๋ชฉ์ ์ฌ์ฉํ ์ ์๋ค.
(1) NSPrivacyCollectedDataType: ์์งํ๋ ๋ฐ์ดํฐ ํ์ ์ ์๋ณํ ์ ์๋ String์ด๋ค. ์๋์ ๋ฐ์ดํฐ ์ ํ ํญ๋ชฉ์์ ์ฑ ๋๋ ํ์ฌ SDK๊ฐ ์์งํ๋ ๋ฐ์ดํฐ์ ์ผ์นํ๋ ๊ฐ์ ์ ํํด์ผ ํ๋ค. ์์ ์ค๋ช ํ๋ ์ฐ๋ฝ์ฒ ์ ๋ณด, ๊ฒฐ์ , ๊ฑด๊ฐ ๋ฑ์ ๋ํ ํค๊ฐ๊ณผ ์ค๋ช ์ ํ์ธํ๋ฉด ๋๋ค.
(2) NSPrivacyCollectedDataTypeLinked: ๋ฐ์ดํฐ ์ ํ์ ์ฌ์ฉ์์ ID์ ์ฐ๊ฒฐํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ Boolean ๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด, ๊ด๊ณ ์ ๊ด๋ จ๋ SDK๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๊ฒฝ์ฐ, ๊ด๊ณ SDK์์ ํ์ฌ ์ฌ์ฉ์๋ฅผ ํน์ ํ ์ ์๋ ๋ฐ์ดํฐ ์ ํ์ด ์๋ค๋ฉด True, ์๋ค๋ฉด False๋ก ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
(3) NSPrivacyCollectedDataTypePurposes: ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ์ด์ ๋ฅผ ๋์ดํ๋ ๋ฌธ์์ด ๋ฐฐ์ด์ด๋ค.
4. Required Reason API ์ฌ์ฉ ๋ชฉ์ ๋ํ๋ด๊ธฐ
- API์ ์ฌ์ฉ ๋ชฉ์ ์ NSPrivacyAccessedAPITypes์์ ๋ช ์ํ ์ ์๋ค.
(1) Key ๊ฐ
- NSPrivacyAccessedAPIType: ์ฑ์ด ์ฌ์ฉํ๋ ํ์ API์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์๋ณํ๋ ๋ฌธ์์ด์ด๋ค.
- NSPrivacyAccessedAPITypeRasons: ์ฑ์ด API๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ์๋ณํ๋ ๋ฌธ์์ด ๋ฐฐ์ด์ด๋ค.
(2) UserDefaults๋ ์ฌ์ฉ ๋ชฉ์ ์ ๋ช ์ํ์ฌ์ผ ํ๋ค.
- ์๋์ ์ด๋ฏธ์ง๋ ์ฌ์ฉ ์ด์ ๋ค์ ๋ํ ๊ฐ๋ค์ด๋ค.
- ์ค์ ๋ก UserDefaults์ ๊ด๋ จํด ์ฑ ๋ด์์ ๋จ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ ์ค์ด๊ธฐ์ ์๋์ ๊ฐ์ด ์ ํํ์ฌ ์ ์ถํ๋ค.
[ ์ฃผ์ ์ฌํญ ]
- ์์ง๋ ๋ฐ์ดํฐ ํญ๋ชฉ๊ณผ ์ฌ์ฉ๋ชฉ์ ์ ๋ช ์ํ ๋๋ ๊ณต์ ๋ฌธ์์์ ์ ๊ณต๋ ํญ๋ชฉ๋ง์ ํค & ๋ฐธ๋ฅ๋ก ์ค์ ํ ์ ์๋ค. ์ปค์คํ ํ ๊ฒฝ์ฐ, ๋ฆฌ์ ์ฌ์ ๊ฐ ๋ ์๋ ์๋ค๋ ๊ฒ์ ์์๋์.
5. Privacy Report
- ๋ง์ง๋ง์ผ๋ก ์ธ๋ถ SDK์ ์ฑ ๋ด์ Privacy Manifest File์ ๊ฐ์ง๊ณ Privacy Report๋ฅผ ๋ง๋ค๋ฉด ๋๋ค.
(1) Product → Archive ์งํ
(2) Organizer์์ Archive๋ฅผ ์ฐํด๋ฆญํ์ฌ Generate Privacy Report๋ฅผ ์ ํํ์.
์ด์ ์ ์ฅํ ์์น๋ฅผ ์ ํํ๊ณ , ์ฑ์คํ ์ด ์ปค๋ฅํธ์์ ์ฑ์ด ์์งํ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ์ฑ์์ฃผ๋ฉด ๋๋ค.