Salta al contenuto principale

Privacy Manifest per app iOS

Guida alla conformità 2026 e troubleshooting per PrivacyInfo.xcprivacy nelle app iOS Capacitor: API con motivazione richiesta, errori ITMS-91053 e ITMS-91061 e manifest SDK di terze parti.

Privacy Manifest per app iOS

I privacy manifest di Apple sono obbligatori per l'upload su App Store: ogni app necessita di un PrivacyInfo.xcprivacy che descriva la raccolta dati, i domini di tracking e ogni API con motivazione richiesta le tue chiamate code. SDK di terze parti su l'elenco richiesto da Apple devono includere i propri manifest (e le firme se distribuiti come binari). Questa guida si concentra su conformità 2026 e troubleshooting per Capacitor app iOS: cosa dichiarare e come risolvere ITMS-91053 e ITMS-91061, e come validare prima di inviare.

Cosa copre un privacy manifest

Un privacy manifest è una property list inclusa nella tua app o in SDK. Xcode aggrega tutti i manifest in fase di archiviazione in un unico report sulla privacy.

Chiave Scopo
NSPrivacyTracking Se la tua app o SDK utilizza i dati per il tracking secondo la definizione di Apple
NSPrivacyTrackingDomains Domini coinvolti nel tracking
NSPrivacyCollectedDataTypes Tipi di dati raccolti e modalità di utilizzo
NSPrivacyAccessedAPITypes API con motivazione richiesta che la tua tua code utilizza, con i relativi codici motivo approvati

Panoramica di Apple: Aggiungere un privacy manifest alla tua app o a SDK di terze parti.

Sei responsabile di tutti i code nel binario, inclusi gli SDK incorporati. Il tuo manifest deve descrivere solo la tua appNon incollare le pratiche relative ai dati di un altro SDK nel tuo file.

Motivazioni richieste per le categorie API

Da 1 maggio 2024, App Store Connect rifiuta gli upload se l'app utilizza un API elencato senza una motivazione approvata in NSPrivacyAccessedAPITypes. Apple documenta le API e le motivazioni approvate in Descrivere l'uso delle categorie API richieste.

A partire da TN3183, categoria i valori sono:

NSPrivacyAccessedAPIType valore Trigger tipici nelle app ibride
NSPrivacyAccessedAPICategoryUserDefaults Impostazioni, stato dei plugin, piccola persistenza
NSPrivacyAccessedAPICategoryFileTimestamp Metadati file, cache, bundle di aggiornamento
NSPrivacyAccessedAPICategoryDiskSpace Controllo spazio libero prima dei download
NSPrivacyAccessedAPICategorySystemBootTime Tempo trascorso, timer o timestamp assoluti
NSPrivacyAccessedAPICategoryActiveKeyboards Estensione tastiera o rilevamento input

Per ogni categoria utilizzata, aggiungi un dizionario con NSPrivacyAccessedAPIType e NSPrivacyAccessedAPITypeReasons. Scegli solo i codici motivo elencati da Apple per quella categoria. Codici errati causano il rifiuto della review.

Esempio di frammento (adatta categorie e codici in base alla tua app dopo aver analizzato il report sulla privacy):

<key>NSPrivacyAccessedAPITypes</key>
<array>
  <dict>
    <key>NSPrivacyAccessedAPIType</key>
    <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
    <key>NSPrivacyAccessedAPITypeReasons</key>
    <array>
      <string>CA92.1</string>
    </array>
  </dict>
</array>

Capacitor compare proprio nei requisiti SDK di terze parti di Apple, quindi il framework include un manifest per l'uso di API di Capacitor. Serve comunque un manifest a livello di app per il tuo layer nativi e JavaScript, plugin e API non coperte dalle dipendenze.

ITMS-91053: dichiarazione API mancante

ITMS-91053 significa che App Store Connect ha rilevato un motivo API richiesto nel build senza una voce corrispondente nel privacy manifest unificato.

Come risolvere:

  1. Leggi l'email di rifiuto o l'upload log. Indica il API category (per esempio NSPrivacyAccessedAPICategoryDiskSpace).
  2. Apri il report sulla privacy dell'archive in Xcode (Prodotto &gt; Archivio, poi Genera Privacy Report sull'archive) e verifica se la lacuna riguarda il tuo target o una dipendenza.
  3. Se il API si trova in il tuo code o in un plugin di tua proprietà, aggiungi la categoria e una motivazione approvata a ios/App/PrivacyInfo.xcprivacy.
  4. Se il API proviene da una dipendenza, aggiorna il pod o il pacchetto SPM a una versione che includa un manifest, oppure patcha il plugin e dichiara solo ciò che il tuo fork chiama effettivamente.
  5. Riaffidizza e conferma che la categoria compaia nel report prima di effettuare un nuovo upload.

Non dichiarare categorie che non utilizzi. L'analisi statica di Apple si basa sui simboli nel binario.

ITMS-91061: privacy manifest di terze parti mancante

ITMS-91061 significa un SDK con impatto sulla privacy nel tuo app bundle non ha un PrivacyInfo.xcprivacy. Apple specifica che quando pubblichi una nuova app o un aggiornamento che aggiunge un SDK elencato, quel SDK deve includere un manifest; anche gli SDK binari richiedono un la firma valido dal vendor SDK.

Come risolvere:

  1. Copia il percorso del framework dall'email (ad esempio Frameworks/FirebaseCore.framework/FirebaseCore).
  2. Identifica il pacchetto CocoaPods, SPM o il binario vendored.
  3. Aggiorna a una release vendor che include PrivacyInfo.xcprivacy nella root del framework.
  4. Pulisci, ricostruisci e verifica il file all'interno di .xcarchive prima dell'upload.

Non spostare la collezione di SDK o le dichiarazioni API nel manifest dell'app. Apple avverte esplicitamente che il manifest deve descrivere solo l'app. Se SDK non è più mantenuto, sostituiscilo o usa una build vendor conforme.

Gli SDK elencati includono i comuni stack mobile (Firebase, Flutter, Capacitor, shared_preferences_ios, e altri). Controlla l'elenco aggiornato sul sito di Apple prima di ogni release.

Manifest e firme SDK di terze parti

Quando aggiorni una dipendenza, Xcode verifica che i framework binari siano stati firmati dallo stesso sviluppatore delle versioni precedenti. Questo protegge la supply chain quando i manifest cambiano.

Workflow pratico:

  • Dopo aver pod install o per risolvere SPM, cerca ios/ per PrivacyInfo.xcprivacy file.
  • Archivia e usa Genera Privacy Report per avere un quadro completo.
  • Confronta il report con le risposte al questionario sulla privacy dell'App Store.

Per gli strumenti live update, dichiara le Required Reason API che l'updater usa davvero (ad esempio spazio su disco, timestamp dei file o user defaults). L'accesso alla rete non è una categoria Required Reason API. Se l'updater raccoglie dati personali, dichiarali nelle etichette privacy dell'App Store e nelle risposte al questionario; scaricare un aggiornamento via HTTPS non crea di per sé una nuova categoria di divulgazione. Mantieni conformità Capgo live update da tenere a mente quando documenti il comportamento OTA.

Aggiungi PrivacyInfo.xcprivacy in un progetto iOS Capacitor

  1. Sincronizza il progetto nativo: bunx cap sync ios.
  2. Apri il workspace di Xcode in ios/App.
  3. File &gt; Nuovo &gt; File, seleziona Privacy dell'app (o aggiungi un PrivacyInfo.xcprivacy plist vuoto).
  4. Salva il file in ios/App (nella stessa cartella di AppDelegate va bene).
  5. Nel target Build Phases &gt; Copy Bundle Resources, conferma che PrivacyInfo.xcprivacy è elencato.
  6. Inserisci i tipi di dati tracciati o raccolti e le API per le relative motivazioni, in base alla tua app e ai plugin.
  7. Esegui l'Archive, genera il report sulla privacy e correggi eventuali categorie mancanti prima di caricare su App Store Connect.

Se modifichi il plist come XML su disco, riapri Xcode per assicurarti che la target membership rimanga corretta.

Ogni app o target SDK mantiene il proprio PrivacyInfo.xcprivacy. Quando esegui l'archive, Xcode aggrega i manifest in un unico report sulla privacy. Non devi unire manualmente i plist delle dipendenze nel file della tua app.

Per un plugin Capacitor personalizzato distribuito come framework iOS dedicato, aggiungi PrivacyInfo.xcprivacy sotto quello del plugin ios/Plugin/ nella cartella (o equivalente) e inseriscilo nel target del plugin in Copia le risorse del bundle, non solo nel target dell'app.

Quando NSPrivacyTracking è vero o se incorpori SDK di pubblicità o analytics, allinea il manifest con le etichette privacy dell'App Store e mostra il prompt App Tracking Transparency quando richiesto da iOS. @capgo/capacitor-app-tracking-transparency copre il flusso ATT per le app Capacitor.

Checklist di validazione prima dell'invio

  • Il target dell'app include PrivacyInfo.xcprivacy le Copia le risorse del bundle.
  • Ogni categoria di motivazione richiesta nel rifiuto o nel report contiene codici approvati.
  • Ogni SDK di terze parti elencato nel build include il proprio manifest nel percorso previsto.
  • Il report sulla privacy corrisponde alla tua configurazione di SDK per analytics, ads e autenticazione.
  • Le etichette sulla privacy dell'App Store sono allineate al report consolidato.

FAQ

I plugin Capacitor hanno bisogno di un proprio privacy manifest?

Se un plugin è distribuito come sorgente nel tuo repo, il suo utilizzo di API fa parte del binario della tua app. Dichiara le API chiamate dal plugin nel manifest dell'app, oppure contribuisci con un manifest all'interno del target del plugin se viene distribuito come framework separato. I pod binari devono seguire le regole Apple per i SDK di terze parti.

Posso risolvere l'errore ITMS-91061 modificando solo il PrivacyInfo.xcprivacy della mia app?

No. Il SDK deve includere il manifest. Il tuo file deve solo documentare le pratiche della tua app.

Dove sono documentate le date delle policy di Apple?

API con motivazione richiesta: obbligatorie dal 1° maggio 2024. Le regole su manifest e firma per gli SDK elencati sono descritte in Requisiti SDK di terze parti.

Torna a Privacy Manifest per iOS Apps

Se stai usando Privacy Manifest per app iOS per pianificare sicurezza e compliance, collegalo a Crittografia per i dettagli di implementazione in Encryption, Conformità per i dettagli di implementazione in Compliance, Scanner di sicurezza Capgo per il workflow di Capgo Security Scanner, Sicurezza Capgo per il workflow di Capgo Security, e Trust Center di Capgo per il workflow di Capgo Trust Center.

Live update per le app Capacitor

Quando un bug del web layer è live, rilascia il fix tramite Capgo invece di aspettare giorni per l'approvazione degli store. Gli utenti ricevono l'update in background, mentre le modifiche native restano nel normale percorso di review.

Le ultime dal nostro blog

Capgo ti offre i migliori insight per creare un'app mobile davvero professionale.