LaunchLint Academy

La risposta breve
- PrivacyInfo.xcprivacy dichiara pratiche e motivi approvati per alcune Required Reason APIs.
- In React Native ed Expo gli accessi arrivano spesso da dipendenze native. Verifica SDK, Pod e report Xcode finale.
- Il manifest non sostituisce App Privacy, informativa sulla privacy o consenso ATT quando applicabile.
1. Cosa descrive PrivacyInfo.xcprivacy
Apple usa manifest leggibili da macchina per app e SDK. Xcode può aggregare quelli terzi per controllare le pratiche incluse e preparare App Privacy.
Può contenere dati raccolti, domini tracking e Required Reason APIs. Non tutte le chiavi servono a ogni app; copiare un modello crea affermazioni tecniche.
| Livello | Ruolo | Sostituisce? |
|---|---|---|
| Manifest | Dichiarazione bundle | No |
| Report Xcode | Aggregazione | No |
| App Privacy | Dichiarazione pubblica | No |
| informativa sulla privacy | Trattamento e diritti | No |
2. Required Reason APIs: motivo reale
UserDefaults, timestamp, boot time, spazio disco o tastiera attiva possono richiedere un motivo approvato. Apple può ampliare la lista; consulta la versione corrente.
Il codice non è testo libero o una patch cosmetica. Deve coincidere con l’uso reale; altrimenti correggi implementazione o dipendenza.
3. Gli SDK terzi sono parte dell’invio
Apple mantiene una lista di SDK con requisiti di manifest e firma in alcuni casi. Stack React Native possono includere Hermes, Firebase, GoogleUtilities, Protobuf, OneSignal o SDWebImage.
Rimani responsabile. Preferisci versioni con manifest corretto del vendor e non mascherare dichiarazioni vecchie con un file globale.
- Inventariare dipendenze native
- Confrontare lista Apple
- Leggere docs e release
- Localizzare manifest
- Verificare firma
- Rimuovere moduli inutili
- Rigenerare report
4. Configurare in Expo e React Native
Con CNG usa expo.ios.privacyManifests. In bare React Native crea il file in Xcode e assegna il target corretto. Un aggiornamento OTA non basta.
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyAccessedAPITypes": [
{
"NSPrivacyAccessedAPIType":
"NSPrivacyAccessedAPICategoryUserDefaults",
"NSPrivacyAccessedAPITypeReasons": ["CA92.1"]
}
]
}
}
}
}Non è un modello universale. Verifica CA92.1 e ogni codice contro documentazione corrente e configurazione production risolta.
- Risolvere production
- Validare chiavi
- Collegare motivo e uso
- Target corretto
- Nuovo binario
- Aumentare build
5. Il bundle finale è l’prove
Un file nel file del progetto mostra intenzione. L’archive include Pod, framework e risorse. Leggi report Xcode e manifest aggregati; Expo documenta limiti con alcune dipendenze statiche.
Verifica app, extension, widget e notification extension. Conserva report, build e lockfile.
- Archive Release
- Tutti i target
- Report aggregato
- Tipi o domini inattesi
- Motivi contro usi
- Warning legato al build
- Fix nel nuovo artefatto
6. Manifest, App Privacy e ATT sono distinti
App Privacy è pubblica; il manifest è tecnico. Il manifest SDK non descrive da solo backend e comportamento dinamico e non genera il modulo completo.
ATT è un altro livello. NSPrivacyTracking non concede consenso e il dialogo ATT non sostituisce la label.
7. Correggere sistematicamente
Collega warning, categoria e modulo. Controlla codice nativo, Pod, framework, update e scopo prima di cambiare manifest.
LaunchLint inventaria file, config, versioni e categorie senza eseguire build. Il task separa prove file del progetto e verifica manuale del bundle.
- Salvare warning e build
- Identificare modulo
- Validare motivo
- Aggiornare o rimuovere SDK
- Manifest minimo
- Nuovo release
- Report e upload
- Aggiornare label e informativa sulla privacy
8. Preflight prima dell’upload
Congela lockfile e configurazione production prima dell’archive. Crea il binario dal commit previsto, annota il build number e non associare un warning di un vecchio upload al nuovo artefatto. Dopo una modifica a Pod, plugin o target ripeti l’intero controllo.
Leggi il Privacy Report come domande: riconosci ogni SDK, categoria, dominio e reason? Indaga ciò che non ti aspetti prima dell’invio. Poi confronta App Privacy e informativa sulla privacy, incluso il backend che il manifest non descrive. Una vecchia approvazione non prova la correttezza della nuova combinazione di dipendenze.
Checklist finale:
- Commit e lockfile identificati
- Configurazione production risolta
- Tutti i target archiviati
- Report aggregato rivisto
- Reason legati agli usi
- SDK della lista Apple aggiornati
- App Privacy e informativa sulla privacy confrontate
- Build esatto su TestFlight
- Email di validazione controllate
- prove conservata
9. Errori che un manifest valido non evita
Un plist può essere sintatticamente valido ma sbagliato. Succede copiando reason da un’altra app, dichiarando categorie assenti dal build, aggiungendo un file globale per coprire uno SDK vecchio, dimenticando una extension o usando una app.config che genera valori differenti in production. La sintassi non dimostra l’uso reale o il target corretto.
Non trattare un singolo livello come verità completa: aggiornare App Privacy senza leggere il bundle, correggere il manifest senza l’informativa sulla privacy o credere che ATT copra ogni tracking lascia incoerenze. Assegna una persona al confronto dei livelli e una seconda alla verifica dell’archive; chi implementa il fix non dovrebbe essere l’unico a convalidarlo.
Blocca l’invio quando trovi:
- Reason senza uso documentato
- Versione SDK sconosciuta
- Extension non verificata
- Dominio tracking inatteso
- Warning riferito a un altro build
- Modifica nativa distribuita solo OTA
- Label e informativa sulla privacy con scopi diversi
- Nessun Privacy Report conservato
- Lockfile cambiato dopo l’archive
- TestFlight non corrisponde al build controllato
Domande frequenti
Ogni app necessita del proprio manifest?
Non con le stesse voci. Dipende da API e SDK nel bundle finale, inclusi target secondari, extension e dipendenze transitive che package.json non mostra chiaramente.
Posso copiare i reason code?
No. Devono corrispondere all’uso reale approvato e alla categoria individuata nel build esatto che stai inviando.
Sostituisce App Privacy?
No. Sono livelli distinti insieme a informativa sulla privacy e ATT. Il modulo pubblico copre anche backend e finalità che il manifest tecnico non descrive completamente.
Basta un’OTA?
No. Il manifest è parte del binario nativo: genera, verifica e carica un nuovo artefatto con build number aggiornato.