Manifeste de confidentialité Apple
Apple a mis en place une politique de confidentialité pour toute application ciblant iOS sur l’App Store. L’application doit inclure un manifeste de confidentialité dans l’ensemble d’applications afin de répertorier les types de données collectées par votre application .NET MAUI ou par les Kits de développement logiciel (SDK) et packages tiers, ainsi que les raisons justifiant son utilisation d’API avec raison requise. Si votre utilisation d’API avec raison requise ou de SDK tiers n’est pas déclarée dans le manifeste de confidentialité, votre application peut être rejetée par l’App Store. Pour plus d’informations sur les manifestes de confidentialité, consultez Privacy manifest files (Fichiers de manifeste de confidentialité) sur developer.apple.com.
Selon que vous utilisez .NET MAUI pour développer une application ou que vous fournissez des packages de liaison à utiliser avec des applications .NET MAUI, l’obligation d’inclure un manifeste de confidentialité peut varier.
Manifeste de confidentialité pour les applications .NET MAUI
Toutes les applications MAUI .NET ciblant des appareils exécutant iOS ou iPadOS doivent inclure un manifeste de confidentialité dans l’ensemble d’applications. Pour plus d’informations, consultez Ajouter les entrées requises au manifeste de confidentialité.
Vous devez également passer en revue votre propre code, tout code natif ainsi que les pratiques de collecte et de suivi des données et mettre à jour le manifeste de confidentialité en conséquence :
- Si votre application ou SDK collecte des données sur la personne qui utilise l’application, vous devez décrire l’utilisation de ces données dans un manifeste de confidentialité. Pour plus d’informations, consultez Describing data use in privacy manifests (Description de l’utilisation des données dans les manifestes de confidentialité) sur developer.apple.com.
- Si votre application ou SDK inclut des API .NET qui appellent les API avec raison requise d’Apple, vous devez évaluer votre utilisation de chacune de ces API et déclarer les raisons de leur utilisation. Pour plus d’informations sur les API avec raison requise, consultez Describing use of required reason API (Décrire l’utilisation d’une API avec raison requise) sur developer.apple.com.
Remarque
Si votre application inclut des SDK ou packages tiers, ces composants tiers doivent inclure séparément leur propre manifeste de confidentialité.
Un manifeste de confidentialité est automatiquement ajouté aux nouveaux projets d’application .NET MAUI créés à l’aide de l’interface CLI .NET ou de Visual Studio. Pour plus d’informations sur l’ajout d’un manifeste de confidentialité à une application .NET MAUI existante, consultez Ajouter un manifeste de confidentialité à une application existante.
Important
Les instructions ci-dessus sont fournies pour des raisons pratiques. Il est important que vous consultiez la documentation d’Apple sur les fichiers de manifeste de confidentialité avant de créer un tel manifeste pour votre projet.
Manifeste de confidentialité pour les projets de liaison
Les projets de liaison se répartissent en deux catégories : les liaisons d’infrastructure statique et les liaisons d’infrastructure dynamique. Vous devez joindre un manifeste de confidentialité à l’infrastructure en le plaçant dans le bundle d’infrastructure. Quand il est placé correctement, le projet de liaison l’ajoute automatiquement à l’ensemble d’applications pour que les développeurs d’applications n’aient pas à fournir de raisons liées à l’utilisation de l’API d’infrastructure. Pour plus d’informations, consultez Placement de contenu dans un ensemble.
Dans le cas d’une infrastructure dynamique, l’infrastructure est ajoutée à l’ensemble d’applications. Le manifeste de politique de confidentialité est ajouté à l’emplacement où l’App Store s’attend à le trouver. Le développeur d’applications n’a rien à faire.
Quand les développeurs d’applications lient une infrastructure statique, ils doivent fusionner manuellement le manifeste de confidentialité inclus dans l’infrastructure statique au manifeste de confidentialité de l’application. Cela est dû à la façon dont les bibliothèques statiques sont liées au fichier binaire de l’application principale, ce qui permet d’éviter l’utilisation de l’infrastructure.
Ajouter un manifeste de confidentialité à une application existante
Pour ajouter un manifeste de confidentialité à un projet d’application .NET MAUI, ajoutez un nouveau fichier XML nommé PrivacyInfo.xcprivacy au dossier Platforms/iOS de votre projet d’application. Vérifiez que le fichier PrivacyInfo.xcprivacy ne dispose pas d’une extension .xml. Ensuite, ajoutez le code XML suivant au fichier :
<?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/>
</plist>
Ensuite, modifiez le fichier projet de votre application .NET MAUI (*.csproj) et ajoutez l’élément de build suivant pour iOS en bas de l’élément racine <Project>
:
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
<BundleResource Include="Platforms\iOS\PrivacyInfo.xcprivacy" LogicalName="PrivacyInfo.xcprivacy" />
</ItemGroup>
Le manifeste de confidentialité est ainsi inclus dans le package de l’application iOS à la racine de l’ensemble.
Ajouter les entrées requises au manifeste de confidentialité
Toutes les applications MAUI .NET ciblant des appareils exécutant iOS ou iPadOS doivent inclure un manifeste de confidentialité dans l’ensemble d’applications. Cela est dû au fait que le runtime .NET et la bibliothèque de classes de base (BCL) utilisent des API avec raison requise qui ne sont pas supprimées, quel que soit le mode de l’éditeur de liens. Les trois catégories d’API et leurs raisons associées qui doivent figurer dans le manifeste de confidentialité dans une application .NET MAUI sont présentées dans le tableau suivant :
Catégorie d’API | Motif | Lien |
---|---|---|
NSPrivacyAccessedAPICategoryFileTimestamp |
C617.1 |
API d’horodateurs de fichiers |
NSPrivacyAccessedAPICategorySystemBootTime |
35F9.1 |
API d’heure de démarrage du système |
NSPrivacyAccessedAPICategoryDiskSpace |
E174.1 |
API d’espace disque |
Si vous avez ajouté manuellement un manifeste de confidentialité à une application .NET MAUI existante, vous devez y ajouter ces entrées. Pour ce faire, ouvrez le fichier PrivacyInfo.xcprivacy dans un éditeur de texte et ajoutez la clé NSPrivacyAccessAPITypes
, chaque utilisation d’une catégorie d’API avec raison requise étant ajoutée par la suite :
<?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>NSPrivacyAccessedAPITypes</key>
<array>
</array>
</dict>
</plist>
Ajoutez ensuite la catégorie NSPrivacyAccessedAPICategoryFileTimestamp
avec la raison C617.1
, la catégorie NSPrivacyAccessedAPICategorySystemBootTime
avec la raison 35F9.1
et la catégorie NSPrivacyAccessedAPICategoryDiskSpace
avec la raison E174.1
au tableau NSPrivacyAccessedAPITypes
dans le manifeste de confidentialité :
<?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>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
</array>
</dict>
</plist>
Ces entrées sont le minimum dont vous avez besoin pour votre application. Si vous utilisez une des API avec motifs obligatoires d’une manière qui n’est pas couverte par les codes de motif fournis, vous devez ajouter des codes de motif supplémentaires pour prendre en charge votre utilisation de l’API. Pour plus d’informations sur l’utilisation d’API dans le runtime .NET, la bibliothèque de classes de base .NET (BCL), .NET pour iOS et .NET MAUI pouvant vous amener à avoir besoin de codes de motif supplémentaires, consultez les liens de la section Voir aussi.
Si votre application .NET MAUI utilise l’API Préférences ou que vous utilisez directement l’API NSUserDefaults, vous devez ajouter les motifs d’utilisation dans votre manifeste de confidentialité. Utilisez la chaîne NSPrivacyAccessedAPICategoryUserDefaults
comme valeur de la clé NSPrivacyAccessedAPIType
dans votre dictionnaire NSPrivacyAccessedAPITypes
. Par exemple, si votre application ou SDK utilise directement ou indirectement l’API NSUserDefaults, via l’API Préférences de .NET MAUI, votre fichier PrivacyInfo.xcprivacy doit contenir un élément dict
supplémentaire dans le tableau de la clé NSPrivacyAccessedAPITypes
:
<?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>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>
Vous devez fournir un ou plusieurs codes de motif des API de valeurs utilisateur par défaut sur developer.apple.com. Ajoutez un ou plusieurs codes de motif ci-dessous pour indiquer l’utilisation appropriée :
CA92.1
: pour accéder aux valeurs utilisateur par défaut dans votre application uniquement.1C8F.1
: pour accéder aux valeurs utilisateur par défaut à partir d’applications, d’extensions d’application et de clips d’application membres du même groupe d’applications.C56D.1
: pour accéder aux valeurs utilisateur par défaut à partir d’un SDK.AC6B.1
: pour accéder aux valeurs utilisateur par défaut pour lire la clé com.apple.configuration.managed ou com.apple.feedback.managed.
Important
Si vous modifiez le code dans votre application, vous devrez peut-être mettre à jour le fichier PrivacyInfo.xcprivacy de l’application. Vous devrez notamment ajouter un package NuGet ou un projet de liaison à votre application qui appelle l’une des API avec raison requise d’Apple.
Voir aussi
Utilisez les liens suivants pour en savoir plus sur l’utilisation des API avec motifs obligatoires dans .NET MAUI, .NET pour iOS et le runtime .NET et BCL :