Privacy Manifest — mi ez, a PrivacyInfo.xcprivacy fájl és követelmények

Szerző: IT Sectr Megjelenés: 2026-05-20 Olvasási idő: 9 perc

Privacy Manifest (PrivacyInfo.xcprivacy) — a fájl, amelyet minden alkalmazásnak és harmadik féltől származó SDK-nak kötelezően tartalmaznia kell az iOS buildben 2024 tavaszától. Az Apple megköveteli a védett API-k (Required Reason API) használati okainak és az összegyűjtött adatok típusainak deklarálását. Az Apple Developer Documentation szerint az alkalmazás összetételében minden binárisnak — fő target, keretrendszerek, Swift Package Manager függőségek — saját Privacy Manifestet kell tartalmaznia.

Főbb pontok

  • Privacy Manifest — XML PrivacyInfo.xcprivacy fájl az API használati okok deklarálásával
  • Required Reason API — API kategóriák, amelyek kötelező okmegjelölést igényelnek
  • SDK Privacy Manifest — minden harmadik féltől származó SDK köteles saját manifestet biztosítani
  • Okok (Reasons) — az API használat konkrét célja az Apple jóváhagyott listájáról
  • Határidő — 2024. május 1-től minden új buildnek tartalmaznia kell a Privacy Manifestet

Mi az a Privacy Manifest?

A Privacy Manifest a PrivacyInfo.xcprivacy fájl property list (XML) formátumban, amely deklarálja, hogy az alkalmazás milyen típusú adatokat gyűjt és miért használ bizonyos API-kat. Az Apple a manifesteket az adatvédelmi átláthatóság növelésére irányuló kezdeményezés részeként vezette be, hasonlóan a Privacy Nutrition Label-hez, de kód- és bináris szinten.

A manifest fő célja az úgynevezett Required Reason API-k használatának dokumentálása. Ezek olyan API kategóriák, amelyek felhasználhatók az eszköz digitális ujjlenyomatának levételére (fingerprinting), ezért minden használatukat egy konkrét ok deklarálásával kell kísérni az Apple által jóváhagyott listáról.

2024. május 1-től az Apple elutasítja azokat a buildeket, amelyek nem tartalmaznak Privacy Manifestet. Ez vonatkozik az alkalmazás fő targetjeire és az összes beágyazott SDK-ra és függőségre is. A WWDC 2023 szerint a manifest kötelező minden App Store-on keresztül terjesztett alkalmazás számára.

A manifestnek minden binárisban jelen kell lennie — nem csak a fő alkalmazásban, hanem minden keretrendszerben és statikus könyvtárban is. Ha egy harmadik féltől származó SDK nem biztosított manifestet, a fejlesztőnek kézzel kell hozzáadnia vagy kapcsolatba kell lépnie az SDK szolgáltatójával a frissítés érdekében.

Miért vezette be az Apple a Privacy Manifestet

A manifestek megjelenése előtt a fejlesztők kiterjedt rendszer API-kat (hozzáférés a fájlrendszerhez, dátum/idő, rendszernaplók) használhattak átlátható magyarázat nélkül a használat céljáról. Ez adatszivárgás kockázatát teremtette meg harmadik féltől származó SDK-ken keresztül, amelyek a fejlesztő tudta nélkül gyűjthettek információkat.

A Mysk Inc. (2023) adatai szerint sok népszerű SDK használt API-kat az eszköz ujjlenyomatának levételére nyilvánvaló szükség nélkül — például az uptime idő olvasása az időzóna meghatározásához vagy könyvtárak szkennelése metaadatok gyűjtéséhez. A Privacy Manifest kötelezi minden ilyen művelet deklarálását.

A Required Reason API-k mellett a manifest tartalmazza az NSPrivacyTracking szakaszt — egy jelzőt, amely megmutatja, hogy az alkalmazás használ-e követést (ATT-t igényel) és az NSPrivacyCollectedDataTypes — a gyűjtött adatok típusainak listáját Privacy Nutrition Label formátumban.

Különbség a Privacy Manifest és a Privacy Nutrition Label között

A Privacy Nutrition Label egy felhasználóbarát megjelenítés az alkalmazás App Store oldalán, amely megmutatja, hogy az alkalmazás milyen adatokat gyűjt. A Privacy Manifest egy technikai fájl a binárison belül, amelyet az Apple automatikusan ellenőriz. Ha a manifest adatai nem egyeznek az App Store Connect címkéivel, az Apple elutasítja a buildet.

Így a manifest az igazság forrása az Apple ellenőrző rendszere számára. Ennek alapján automatikusan generálódnak az adatvédelmi címkék, de a fejlesztőnek mindkét megjelenítést naprakészen kell tartania. A manifest publikálás utáni módosítása új build beküldését igényli felülvizsgálatra.

A PrivacyInfo.xcprivacy szerkezete

A PrivacyInfo.xcprivacy fájl a property list formátumot használja Dictionary gyökértípussal. A legfelső szint fő kulcsai: NSPrivacyTracking (Boolean), NSPrivacyTrackingDomains (Array), NSPrivacyCollectedDataTypes (Array), NSPrivacyAccessedAPITypes (Array).

Legfelső szintű kulcsok

Az NSPrivacyTracking kulcs — logikai érték, amely jelzi, hogy az alkalmazás használ-e követést (ATT-t igényel). Ha true, meg kell adni az NSUserTrackingUsageDescription-t is az Info.plist-ben. Az NSPrivacyTrackingDomains kulcs — a tartományok tömbje, ahol a követést alkalmazzák.

Az NSPrivacyCollectedDataTypes kulcs — szótárak tömbje, amelyek mindegyike leírja a gyűjtött adatok típusát: kategória (NSPrivacyCollectedDataType), kötelezőség (NSPrivacyCollectedDataTypeLinked), cél (NSPrivacyCollectedDataTypePurposes). A célok közé tartozik: harmadik felek megjelölése, analitika, termékfejlesztés és tartalom személyre szabása.

Az NSPrivacyAccessedAPITypes kulcs — szótárak tömbje minden Required Reason API kategóriához: kategória (NSPrivacyAccessedAPITypeReasons) — konkrét ok az Apple jóváhagyott listájáról és NSPrivacyAccessedAPIType — az API kategória azonosítója.

xml
<!-- PrivacyInfo.xcprivacy -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

Adatkategóriák az NSPrivacyCollectedDataTypes-ben

Az adattípusok több kategóriára oszlanak: kapcsolattartási adatok (név, e-mail, telefon), pénzügyek (fizetési adatok), azonosítók (IDFA, User ID), használati adatok (naplók, kattintások), diagnosztika (crash logs) és felhasználói tartalom (fotók, videók, fájlok). Minden kategória további jelölést kap: „felhasználóhoz kapcsolódó" (linked) vagy „nem kapcsolódó" (not linked).

A linked azt jelenti, hogy az adatok kapcsolódnak a felhasználói fiókhoz; a not linked — az adatok aggregáltak vagy anonimizáltak. Ettől a jelöléstől függ, hogy az Apple hogyan jeleníti meg az adatvédelmi címkét: a linked adatok sárgával, a not linked zölddel vannak jelölve.

Mely API-k igényelnek okmegjelölést

Az Apple több API kategóriát különített el, amelyek minden használatát egy konkrét okkal kell kísérni a jóváhagyott listáról. Az ok egy egyedi kód, például C617.1 vagy 35F9.1, amely egy adott, az Apple által engedélyezett célnak felel meg.

A Required Reason API fő kategóriái

Az NSPrivacyAccessedAPICategoryFileTimestamp kategória a fájlok időbélyegeihez való hozzáférés API-it tartalmazza (creationDate, modificationDate). Okok: C617.1 (fájlszinkronizálás), 3B52.1 (biztonsági mentés), 0A2A.1 (csalás elleni védelem).

Az NSPrivacyAccessedAPICategoryDiskSpace kategória a szabad lemezterület ellenőrzésére szolgáló API-kat tartalmazza (NSFileManager. Ellenőrzések (NSFileManager). Okok: E174.1 (gyorsítótár-kezelés), 85F4.1 (tartalom letöltése), B728.1 (diagnosztika).

Az NSPrivacyAccessedAPICategorySystemBootTime kategória a rendszer indítási idejéhez való hozzáférés API-it tartalmazza (uptime). Csak egy ok létezik: 35F9.1 (munkamenet idő mérése analitikához). Bármilyen más használat fingerprintingnek minősül.

Az API kategóriák teljes listája

  • FileTimestamp — hozzáférés a fájlok időbélyegeihez, engedélyezett szinkronizáláshoz és biztonsági mentéshez
  • DiskSpace — szabad hely ellenőrzése, engedélyezett gyorsítótár-kezeléshez és letöltésekhez
  • SystemBootTime — uptime idő, csak munkamenet-analitikához engedélyezett
  • UserDefaults — hozzáférés más alkalmazások UserDefaults-ához, teljesen tiltott
  • ActiveKeyboards — aktív billentyűzetek listája, IME-fejlesztők számára engedélyezett
  • SystemAperture — a képernyő kivágásának mérete, fotó- és AR-alkalmazások számára engedélyezett

Minden kategóriának 1 és 5 közötti jóváhagyott oka van. A fejlesztő köteles kiválasztani azt az okot, amely a legpontosabban megfelel az API tényleges használatának. Helytelen ok megadása a build elutasításához vagy a fiók letiltásához vezethet.

Követelmények a harmadik féltől származó SDK-kkal szemben

2024. május 1-től minden harmadik féltől származó SDK — mind a bináris, mind a nyílt forráskódú — köteles belefoglalni a Privacy Manifestet a csomagjába. Az Apple ellenőrzi a manifesteket az összes függőséghez, és ha legalább egy SDK-nak nincs manifestje, a build elutasításra kerül.

A nagy SDK-k (Firebase, Adjust, AppsFlyer, Facebook SDK) már frissítették csomagjaikat. Ha a projekt egy kevésbé ismert SDK-t használ, ellenőrizze a verzióját, és szükség esetén frissítse vagy lépjen kapcsolatba a fejlesztővel. Ideiglenes megoldás a manifest kézi hozzáadása az SDK-hoz a projektben, de ez nem ajánlott a frissítések során fellépő eltérések miatt.

Hogyan hozzunk létre Privacy Manifestet Xcode-ban

A Privacy Info.xcprivacy az Xcode 15+ beépített sablonjával vagy kézzel hozható létre. Mindkét lehetőséget megvizsgáljuk.

Létrehozás Xcode 15 segítségével

Az Xcode 15-ben hozzáadták a Privacy Manifest sablont: File → New → File → Resource → Privacy Manifest. Az Xcode létrehoz egy fájlt alapstruktúrával, és kitölti az NSPrivacyTracking-ot és az üres tömböket az API-khoz és adatokhoz. A létrehozás után kézzel kell megadni az okokat minden használt Required Reason API-hoz.

A sablon automatikusan hozzáadja a fájlt a fő targethez. Ha a projekt több targetet tartalmaz (Extensions, Watch app), a manifestet mindegyikhez hozzá kell adni. Az Xcode nem ellenőrzi a manifest jelenlétét a függőségekben a fordítási szakaszban — csak az archiválási szakaszban.

swift
// AppDelegate: manifest ellenőrzése a fejlesztési szakaszban
import Foundation

func validatePrivacyManifest() {
    guard let path = Bundle.main.path(
        forResource: "PrivacyInfo", ofType: "xcprivacy"
    ) else {
        print("PrivacyInfo.xcprivacy not found")
        return
    }
    guard let dict = NSDictionary(contentsOfFile: path)
    else { return }
    print("Privacy manifest loaded: \(dict.count) keys")
}

Kézi létrehozás XML segítségével

A PrivacyInfo.xcprivacy kézzel is létrehozható egy szokásos XML property list fájlként. Ehhez hozzon létre egy PrivacyInfo.xcprivacy nevű fájlt, írja meg a szabványos plist fejlécet, és adja hozzá a gyökér szótárat a szükséges kulcsokkal. Győződjön meg róla, hogy a fájl hozzá van adva a targethez (Target Membership).

A kézi módszer akkor hasznos, ha manifestet kell hozzáadni egy statikus könyvtárhoz vagy Package Manager függőséghez az Xcode felület használata nélkül. Fordítás után ellenőrizze, hogy a fájl bekerült-e a binárisba a nm paranccsal vagy archiválással.

A manifest ellenőrzése publikálás előtt

Mielőtt elküldené a buildet az App Store-ba, ellenőriznie kell, hogy a Privacy Manifest helyes és teljes-e. Az Apple több ellenőrző eszközt biztosít.

Az Xcode beépített érvényesítője

A projekt archiválásakor (Product → Archive) az Xcode elvégzi a manifestek ellenőrzését. Ha hibát észlel — hiányzó manifest, helytelen ok, üres kategória — az archiválás hibával végződik. A hibanapló az Issue navigator-ban jelenik meg a problémás SDK és API kategória megjelölésével.

További ellenőrzést végez az App Store Connect a build feltöltésekor. Ha az érvényesítés sikertelen, a build elutasításra kerül egy automatikus e-maillel, amely tartalmazza a problémás API azonosítóját és az ajánlott javítást.

Ellenőrzés parancssoron keresztül

Az ellenőrzés automatizálásához használjon szkripteket, amelyek elemzik a binárist a Required Reason API használatára. Az Apple biztosítja a libtool eszközt és a szimbólumellenőrző szkripteket, de a közösség kényelmesebb segédprogramokat fejlesztett ki.

bash
# FileTimestamp API használatának keresése a binárisban
nm MyApp.app/MyApp | grep "NSFileCreationDate"

# PrivacyInfo.xcprivacy jelenlétének ellenőrzése az alkalmazásban
find MyApp.app -name "*.xcprivacy"

Gyakori érvényesítési hibák

A leggyakoribb hiba — a manifest hiánya az egyik SDK-ban. Még ha a fő target tartalmazza is a manifestet, az Apple minden binárist külön ellenőriz. A második leggyakoribb — helytelen okkód: egy API kategória okának használata egy másik kategóriába tartozó API-val.

A harmadik hiba — az túlzott deklarálása olyan API-knak, amelyeket valójában nem használnak. A fejlesztők minden lehetséges okot hozzáadnak „biztonság kedvéért", ami aggasztja az Apple felülvizsgálóit. Csak azokat a kategóriákat adja hozzá, amelyeket ténylegesen használ. Használja az Xcode statikus elemzőjét az ellenőrzéshez.

Gyakran ismételt kérdések

Mi történik a Privacy Manifest hiányában?

2024. május 1-től az Apple elutasít minden buildet manifest nélkül. A hiba az App Store Connect-be történő feltöltés szakaszában jelentkezik. A régi alkalmazások nincsenek blokkolva, de a frissítések a manifest kötelező belefoglalását igénylik.

Szükséges a Privacy Manifest iPadOS alkalmazásokhoz?

Igen, a manifest kötelező az összes Apple platformhoz: iOS, iPadOS, macOS, tvOS, watchOS és visionOS. A Required Reason API követelményei egységesek minden platformon, bár az API készletek kissé eltérhetnek.

Hogyan adjunk hozzá manifestet egy harmadik féltől származó SDK-hoz?

Ha az SDK nem biztosított manifestet, hozzon létre egy külön PrivacyInfo.xcprivacy fájlt, és adja hozzá az SDK csoporthoz a projektben. Adja meg azokat az okokat az API-khoz, amelyeket ez az SDK használ, az SDK dokumentációja alapján.

Elutasíthatja az Apple a buildet helytelen ok miatt?

Igen. Az automatikus ellenőrzés során az Apple összehasonlítja a deklarált okokat a tényleges API-hívásokkal. Az eltérés elutasításhoz vezet. A kézi ellenőrzés során a felülvizsgáló magyarázatot kérhet.

Ellenőrzi az Apple a Privacy Manifestet a Swift Package Manager esetében?

Igen, az Apple ellenőrzi a manifesteket minden függőséghez, beleértve az SPM-et is. A csomagszolgáltatók kötelesek belefoglalni a PrivacyInfo.xcprivacy-t a tárolóikba. Az Xcode figyelmeztet a hiányzó manifestekre archiváláskor.

Összefoglalás

  • Privacy Manifest — kötelező PrivacyInfo.xcprivacy fájl minden alkalmazáshoz és SDK-hoz 2024-től
  • Required Reason API — 6 API kategória, amelyek a használat konkrét okának deklarálását igénylik
  • Okok — egyedi kódok (C617.1, 35F9.1), minden kategóriának 1-5 engedélyezett oka van
  • SDK — minden harmadik féltől származó SDK-nak saját manifestet kell tartalmaznia a binárisban
  • Érvényesítés — az Xcode ellenőrzi a manifestet archiváláskor, az App Store Connect feltöltéskor
  • Határidők — 2024. május 1-től minden új buildnek tartalmaznia kell a manifestet
  • Hozza létre a PrivacyInfo.xcprivacy-t az Xcode sablon segítségével, és csak a ténylegesen használt API-kat deklarálja

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is