Guida privacy Apple

Apple Privacy Manifest per React Native

Il Privacy Manifest descrive dati, domini di tracking e motivi consentiti per determinate API.

LaunchLint Academy

11 min di letturaRevisionato dal team editoriale di LaunchLint
Illustrazione di PrivacyInfo xcprivacy tra dipendenze React Native e bundle iOS
L’prove è nei manifest e nelle API del bundle finale, non solo in un file del file del progetto.
TL;DR

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.

Livelli distinti
LivelloRuoloSostituisce?
ManifestDichiarazione bundleNo
Report XcodeAggregazioneNo
App PrivacyDichiarazione pubblicaNo
informativa sulla privacyTrattamento e dirittiNo

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.

Esempio Expo: UserDefaults e reason code
{
  "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.

Fonti ufficiali

Questo articolo usa le seguenti fonti primarie ufficiali. Le regole possono cambiare: verifica sempre la versione corrente prima dell’invio.