Aller au contenu
Narvy

ITMS-91056 : PrivacyInfo.xcprivacy invalide

L'un des fichiers PrivacyInfo.xcprivacy de l'IPA (celui de l'application ou d'un framework) n'est pas une property list valide, ou utilise une catégorie ou un code de justification absent de la liste d'Apple. Corrigez ou remplacez ce fichier ; s'il appartient à un SDK, mettez le SDK à jour.

E-mail App Store ConnectITMS-91056
ITMS-91056: Invalid privacy manifest - The PrivacyInfo.xcprivacy file from the following path is invalid: "<path>". Keys and values in your app's privacy manifests must be valid.

Ce que cela signifie

Le manifeste de confidentialité est une property list aux clés fixées. Erreurs fréquentes : un fichier modifié à la main qui ne se lit plus, un nom de catégorie mal orthographié, un code de justification inventé ou copié d'une autre catégorie, ou un tableau de justifications vide. Le fichier fautif appartient souvent à un bundle tiers, pas à l'application.

Le contrôle valide chaque manifeste de l'IPA au regard des catégories et codes d'Apple. Il signale aussi, en info, un bundle d'application sans manifeste à sa racine : Apple ne l'exige que si le code de l'application utilise des API à justification.

Échéance

Pas de date propre : un manifeste invalide est signalé à l'envoi.

Corriger

1. Ouvrir le fichier indiqué dans l'e-mail

terminal (après décompression de l'IPA)
plutil -lint Payload/MyApp.app/Frameworks/Foo.framework/PrivacyInfo.xcprivacy
plutil -p   Payload/MyApp.app/Frameworks/Foo.framework/PrivacyInfo.xcprivacy

2. N'utiliser que les catégories et codes d'Apple

Chaque NSPrivacyAccessedAPIType doit être l'une des cinq catégories, et chaque code de NSPrivacyAccessedAPITypeReasons doit appartenir à cette catégorie dans la liste d'Apple. Modifiez le fichier avec l'éditeur de property list de Xcode plutôt qu'à la main.

3. Mettre à jour le SDK si le fichier n'est pas le vôtre

Un manifeste défectueux dans un framework vient de son fournisseur : passez à une version corrigée.

Vérifier avant de soumettre

Déposez l'IPA sur la page de contrôle des stores. Elle exécute APPSTORE-PRIVACY-MANIFEST avec les dates de cette page, puis supprime le fichier : rien de l'application n'est conservé. Le même moteur tourne hors ligne dans la CLI Narvy et renvoie le code 1 quand un point bloquant est trouvé, ce qui permet de bloquer un job de CI.

Hors ligne, depuis un terminal (narvy-cli 1.2.0 ou plus)
narvy store-check MyApp.ipa --lang fr

Contrôler un build dans le navigateur

Questions fréquentes

L'absence de PrivacyInfo.xcprivacy à la racine de l'application est-elle une erreur ?

Seulement si le code de l'application utilise des API à justification (voir ITMS-91053). Sinon, Apple le recommande sans refuser son absence : le contrôle le signale donc en info.

Une plist valide peut-elle quand même être refusée ?

Oui, si une clé ou une valeur n'est pas définie par Apple. Être lisible ne suffit pas : il faut comparer catégories et codes à la liste d'Apple, ce que fait le contrôle.