Privacy Manifest — vad är det, filen PrivacyInfo.xcprivacy och krav

Författare: IT Sectr Publicerad: 2026-05-20 Lästid: 9 min

Privacy Manifest (PrivacyInfo.xcprivacy) — filen som alla applikationer och tredjeparts-SDK måste inkludera i iOS-bygget från och med våren 2024. Apple kräver deklaration av orsaker till användning av skyddade API (Required Reason API) och typer av insamlade data. Enligt Apple Developer Documentation, måste varje binär i applikationens sammansättning — huvudmål, ramverk, Swift Package Manager-beroenden — innehålla sitt eget Privacy Manifest.

Huvudpunkter

  • Privacy Manifest — XML-fil PrivacyInfo.xcprivacy med deklaration av orsaker till API-användning
  • Required Reason API — API-kategorier som kräver obligatorisk orsaksangivelse
  • SDK Privacy Manifest — varje tredjeparts-SDK är skyldig att tillhandahålla ett eget manifest
  • Orsaker (Reasons) — specifikt syfte med API-användning från Apples godkända lista
  • Deadline — från 1 maj 2024 måste alla nya byggen innehålla Privacy Manifest

Vad är Privacy Manifest?

Privacy Manifest är filen PrivacyInfo.xcprivacy i formatet property list (XML), som deklarerar vilka datatyper applikationen samlar in och varför den använder vissa API. Apple introducerade manifest som en del av initiativet för att öka transparensen kring integritet, liknande Privacy Nutrition Label, men på kod- och binärnivå.

Huvudsyftet med manifestet är att dokumentera användningen av så kallade Required Reason API. Dessa är API-kategorier som kan användas för att ta digitalt fingeravtryck av enheten (fingerprinting), därför måste varje användning åtföljas av en deklaration av en specifik orsak från Apples godkända lista.

Från och med 1 maj 2024 avvisar Apple byggen som inte innehåller Privacy Manifest. Detta gäller både applikationens huvudmål och alla inbäddade SDK och beroenden. Enligt WWDC 2023 är manifestet obligatoriskt för alla applikationer som distribueras via App Store.

Manifestet måste finnas i varje binär — inte bara i huvudapplikationen, utan även i varje ramverk och statiskt bibliotek. Om ett tredjeparts-SDK inte har tillhandahållit ett manifest måste utvecklaren lägga till det manuellt eller kontakta SDK-leverantören för en uppdatering.

Varför Apple introducerade Privacy Manifest

Innan manifesten kom kunde utvecklare använda omfattande system-API (åtkomst till filsystem, datum/tid, systemloggar) utan transparent förklaring av användningssyftet. Detta skapade risk för dataläckage via tredjeparts-SDK som kunde samla in information utan utvecklarens vetskap.

Enligt data från Mysk Inc. (2023) använde många populära SDK API för att ta enhetens fingeravtryck utan uppenbart behov — till exempel läste de upptid för att bestämma tidszon eller skannade kataloger för att samla in metadata. Privacy Manifest tvingar deklaration av varje sådan åtgärd.

Förutom Required Reason API innehåller manifestet avsnittet NSPrivacyTracking — en flagga som visar om applikationen använder spårning (kräver ATT) och NSPrivacyCollectedDataTypes — lista över insamlade datatyper i Privacy Nutrition Label-format.

Skillnad mellan Privacy Manifest och Privacy Nutrition Label

Privacy Nutrition Label är en användarvänlig visning på applikationssidan i App Store, som visar vilka data applikationen samlar in. Privacy Manifest är en teknisk fil inuti binären som kontrolleras automatiskt av Apple. Om data i manifestet inte stämmer överens med etiketterna i App Store Connect avvisar Apple bygget.

Manifestet är således sanningens källa för Apples kontrollsystem. Baserat på det genereras integritetsetiketter automatiskt, men utvecklaren måste hålla båda representationerna uppdaterade. Ändring av manifestet efter publicering kräver att ett nytt bygge skickas för granskning.

Struktur för PrivacyInfo.xcprivacy

Filen PrivacyInfo.xcprivacy använder property list-format med rottypen Dictionary. De viktigaste nycklarna på högsta nivån: NSPrivacyTracking (Boolean), NSPrivacyTrackingDomains (Array), NSPrivacyCollectedDataTypes (Array), NSPrivacyAccessedAPITypes (Array).

Nycklar på högsta nivån

Nyckeln NSPrivacyTracking — ett booleskt värde som anger om applikationen använder spårning (kräver ATT). Om true måste även NSUserTrackingUsageDescription anges i Info.plist. Nyckeln NSPrivacyTrackingDomains — en array av domäner där spårning tillämpas.

Nyckeln NSPrivacyCollectedDataTypes — en array av ordböcker, som var och en beskriver typen av insamlade data: kategori (NSPrivacyCollectedDataType), obligatoriskhet (NSPrivacyCollectedDataTypeLinked), syfte (NSPrivacyCollectedDataTypePurposes). Syften inkluderar: märkning av tredje part, analys, produktutveckling och personalisering av innehåll.

Nyckeln NSPrivacyAccessedAPITypes — en array av ordböcker för varje kategori av Required Reason API: kategori (NSPrivacyAccessedAPITypeReasons) — specifik orsak från Apples godkända lista och NSPrivacyAccessedAPIType — identifierare för API-kategorin.

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>

Datakategorier i NSPrivacyCollectedDataTypes

Datatyper delas in i flera kategorier: kontaktinformation (namn, e-post, telefon), ekonomi (betalningsdata), identifierare (IDFA, User ID), användningsdata (loggar, klick), diagnostik (crash logs) och användarinnehåll (foton, videor, filer). Varje kategori är dessutom märkt som „kopplad till användaren" (linked) eller „inte kopplad" (not linked).

Linked innebär att data är kopplad till användarkontot; not linked — data är aggregerad eller anonymiserad. Beroende på denna märkning visar Apple integritetsetiketten: linked-data markeras med gult, not linked — med grönt.

Vilka API kräver orsaksangivelse

Apple har identifierat flera API-kategorier, där varje användning måste åtföljas av en specifik orsak från den godkända listan. Orsaken är en unik kod, till exempel C617.1 eller 35F9.1, som motsvarar ett specifikt syfte som godkänts av Apple.

Huvudkategorier av Required Reason API

Kategorin NSPrivacyAccessedAPICategoryFileTimestamp omfattar API för åtkomst till filers tidsstämplar (creationDate, modificationDate). Orsaker: C617.1 (filsynkronisering), 3B52.1 (säkerhetskopiering), 0A2A.1 (bedrägeriskydd).

Kategorin NSPrivacyAccessedAPICategoryDiskSpace omfattar API för kontroll av ledigt diskutrymme (NSFileManager. Kontroller (NSFileManager). Orsaker: E174.1 (cachehantering), 85F4.1 (nedladdning av innehåll), B728.1 (diagnostik).

Kategorin NSPrivacyAccessedAPICategorySystemBootTime omfattar API för åtkomst till systemets starttid (upptid). Det finns bara en orsak: 35F9.1 (mätning av sessionstid för analys). All annan användning betraktas som fingerprinting.

Fullständig lista över API-kategorier

  • FileTimestamp — åtkomst till filers tidsstämplar, tillåten för synkronisering och säkerhetskopiering
  • DiskSpace — kontroll av ledigt utrymme, tillåten för cachehantering och nedladdningar
  • SystemBootTime — upptid, endast tillåten för sessionsanalys
  • UserDefaults — åtkomst till andra applikationers UserDefaults, helt förbjuden
  • ActiveKeyboards — lista över aktiva tangentbord, tillåten för IME-utvecklare
  • SystemAperture — storlek på skärmutskärning, tillåten för foto- och AR-applikationer

Varje kategori har 1 till 5 godkända orsaker. Utvecklaren är skyldig att välja den orsak som bäst motsvarar den faktiska användningen av API. Att lämna en oriktig orsak kan leda till avvisande av bygget eller blockering av kontot.

Krav på tredjeparts-SDK

Från och med 1 maj 2024 måste alla tredjeparts-SDK — både binära och med öppen källkod — inkludera Privacy Manifest i sitt paket. Apple kontrollerar manifest för alla beroenden, och om minst ett SDK saknar manifest kommer bygget att avvisas.

Stora SDK (Firebase, Adjust, AppsFlyer, Facebook SDK) har redan uppdaterat sina paket. Om ditt projekt använder ett mindre känt SDK, kontrollera dess version och vid behov uppdatera det eller kontakta utvecklaren. En tillfällig lösning är att manuellt lägga till ett manifest för SDK i projektet, men detta rekommenderas inte på grund av avvikelser vid uppdateringar.

Hur man skapar Privacy Manifest i Xcode

Privacy Info.xcprivacy kan skapas via den inbyggda mallen i Xcode 15+ eller manuellt. Vi undersöker båda alternativen.

Skapa via Xcode 15

I Xcode 15 har mallen Privacy Manifest lagts till: File → New → File → Resource → Privacy Manifest. Xcode skapar en fil med grundstruktur och fyller i NSPrivacyTracking och tomma arrayer för API och data. Efter skapandet måste du manuellt ange orsaker för varje använt Required Reason API.

Mallen lägger automatiskt till filen i huvudmålet. Om projektet har flera mål (Extensions, Watch app) måste manifestet läggas till i varje. Xcode kontrollerar inte förekomsten av manifest i beroenden under kompileringsfasen — endast under arkiveringsfasen.

swift
// AppDelegate: kontroll av manifestet under utvecklingsfasen
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")
}

Skapa manuellt via XML

Du kan skapa PrivacyInfo.xcprivacy manuellt som en vanlig XML property list-fil. För att göra detta, skapa en fil med namnet PrivacyInfo.xcprivacy, skriv standardplisthuvudet och lägg till en rotordbok med nödvändiga nycklar. Se till att filen har lagts till i målet (Target Membership).

Den manuella metoden är användbar när du behöver lägga till ett manifest i ett statiskt bibliotek eller ett Package Manager-beroende utan att använda Xcode-gränssnittet. Efter kompilering, kontrollera om filen har kommit in i binären via kommandot nm eller arkivering.

Kontroll av manifestet före publicering

Innan du skickar bygget till App Store måste du kontrollera att Privacy Manifest är korrekt och fullständigt. Apple tillhandahåller flera kontrollverktyg.

Inbyggd validator i Xcode

Vid arkivering av projektet (Product → Archive) utför Xcode en kontroll av manifesten. Om ett fel upptäcks — saknat manifest, felaktig orsak, tom kategori — avslutas arkiveringen med fel. Felloggen visas i Issue navigator med angivelse av det problematiska SDK och API-kategorin.

Ytterligare kontroll utförs av App Store Connect vid uppladdning av bygget. Om valideringen misslyckas avvisas bygget med ett automatiskt e-postmeddelande som innehåller identifieraren för det problematiska API och den rekommenderade korrigeringen.

Kontroll via kommandoraden

För automatisering av kontrollen, använd skript som analyserar binären för användning av Required Reason API. Apple tillhandahåller verktyget libtool och skript för symbolkontroll, men communityn har utvecklat mer bekväma verktyg.

bash
# Sökning efter användning av FileTimestamp API i binären
nm MyApp.app/MyApp | grep "NSFileCreationDate"

# Kontroll av förekomst av PrivacyInfo.xcprivacy i applikationen
find MyApp.app -name "*.xcprivacy"

Vanliga valideringsfel

Det vanligaste felet — saknat manifest i ett av SDK. Även om huvudmålet innehåller manifestet kontrollerar Apple alla binärer separat. Det näst vanligaste — felaktig orsakskod: användning av en orsak för en API-kategori med ett API från en annan kategori.

Det tredje felet — överdriven deklaration av API som faktiskt inte används. Utvecklare lägger till alla möjliga orsaker "för säkerhets skull", vilket oroar Apples granskare. Lägg endast till de kategorier som faktiskt används. Använd Xcodes statiska analysator för kontroll.

Vanliga frågor

Vad händer om Privacy Manifest saknas?

Från 1 maj 2024 avvisar Apple varje bygge utan manifest. Felet uppstår vid uppladdning till App Store Connect. Gamla applikationer blockeras inte, men uppdateringar kräver obligatorisk inkludering av manifestet.

Krävs Privacy Manifest för iPadOS-applikationer?

Ja, manifestet är obligatoriskt för alla Apple-plattformar: iOS, iPadOS, macOS, tvOS, watchOS och visionOS. Kraven för Required Reason API är enhetliga för alla plattformar, även om API-uppsättningarna kan skilja sig något.

Hur lägger jag till ett manifest för ett tredjeparts-SDK?

Om SDK inte har tillhandahållit ett manifest, skapa en separat fil PrivacyInfo.xcprivacy och lägg till den i SDK-gruppen i projektet. Ange orsaker för de API som detta SDK använder baserat på SDK:s dokumentation.

Kan Apple avvisa ett bygge på grund av felaktig orsak?

Ja. Vid automatisk kontroll jämför Apple de deklarerade orsakerna med faktiska API-anrop. Avvikelse leder till avvisande. Vid manuell kontroll kan granskaren begära förklaring.

Kontrolleras Privacy Manifest för Swift Package Manager?

Ja, Apple kontrollerar manifest för alla beroenden, inklusive SPM. Paketleverantörer är skyldiga att inkludera PrivacyInfo.xcprivacy i sina databaser. Xcode varnar om saknade manifest vid arkivering.

Sammanfattning

  • Privacy Manifest — obligatorisk fil PrivacyInfo.xcprivacy för alla applikationer och SDK från 2024
  • Required Reason API — 6 API-kategorier som kräver deklaration av specifik användningsorsak
  • Orsaker — unika koder (C617.1, 35F9.1), varje kategori har 1-5 tillåtna orsaker
  • SDK — varje tredjeparts-SDK måste innehålla sitt eget manifest i binären
  • Validering — Xcode kontrollerar manifestet vid arkivering, App Store Connect vid uppladdning
  • Tidsfrister — från 1 maj 2024 måste alla nya byggen innehålla manifestet
  • Skapa PrivacyInfo.xcprivacy via Xcode-mallen och deklarera endast faktiskt använda API

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också