Sur cette page

Autorisations d’application

De nombreuses fonctionnalités des appareils et systèmes d'exploitation actuels peuvent avoir des répercussions importantes sur la vie privée, la sécurité et les performances si elles sont utilisées à mauvais escient. Il est donc de plus en plus courant que les plateformes exigent le consentement explicite de l'utilisateur avant d'accéder à ces fonctionnalités.

Les API d'autorisation de Qt permettent à l'application de vérifier ou de demander l'autorisation d'utiliser ces fonctionnalités de manière multiplateforme.

Utilisation

L'accès au microphone de l'appareil est une fonctionnalité qui nécessite généralement le consentement de l'utilisateur. Une application destinée à l'enregistrement de mémos vocaux pourrait, dans un premier temps, ressembler à ceci :

void VoiceMemoWidget::onRecordingInitiated()
{
    m_microphone->startRecording();
}

Pour garantir le bon fonctionnement de cette application sur les plateformes qui exigent le consentement de l'utilisateur pour l'accès au microphone, nous l'étendrions comme suit :

void VoiceMemoWidget::onRecordingInitiated()
{
    QMicrophonePermission microphonePermission;
    switch (qApp->checkPermission(microphonePermission)) {
    case Qt::PermissionStatus::Undetermined :
        qApp->requestPermission(microphonePermission, this,
                   &VoiceMemoWidget::onRecordingInitiated);
        return;
    case Qt::PermissionStatus::Denied :
        m_permissionInstructionsDialog->show();
        return;
    case Qt::PermissionStatus::Granted:
        m_microphone->startRecording();
    }
}

Nous vérifions d’abord si nous connaissons déjà l’état de l’autorisation d’accès au microphone. Si ce n’est pas le cas, nous lançons une demande d’autorisation afin de déterminer l’état actuel, ce qui peut amener à demander le consentement de l’utilisateur. Nous connectons le résultat de la demande au slot dans lequel nous nous trouvons déjà, afin d’avoir une nouvelle occasion d’évaluer l’état de l’autorisation.

Une fois le statut de l'autorisation connu, soit parce que l'autorisation nous a été accordée ou refusée précédemment, soit après avoir reçu le résultat de la requête que nous venons de lancer, nous redirigeons l'utilisateur vers une boîte de dialogue expliquant pourquoi nous ne pouvons pas enregistrer de mémos vocaux pour le moment (si l'autorisation a été refusée), ou nous continuons à utiliser le microphone (si l’autorisation a été accordée).

Remarque : sous macOS et iOS, les autorisations ne peuvent actuellement être demandées que pour les applications disposant d’une interface graphique.

Déclaration des autorisations

Certaines plateformes exigent que les autorisations que vous demandez soient déclarées à l'avance, au moment de la compilation.

Plateformes Apple

Chaque autorisation que vous demandez doit être accompagnée d’une chaîne dite « de description d’utilisation » dans le fichier Info.plist , expliquant pourquoi l’application a besoin d’accéder à cette autorisation. Par exemple :

<key>NSMicrophoneUsageDescription</key>
<string>The microphone is used to record voice memos.</string>

Les clés de description d'utilisation pertinentes sont décrites dans la documentation relative à chaque type d'autorisation.

Pour vous assurer que le backend d'autorisation correspondant est bien inclus dans votre application, veuillez indiquer à votre système de compilation l'emplacement de votre fichier « Info.plist » personnalisé.

Android

Chaque autorisation que vous demandez doit être accompagnée d’une entrée uses-permission dans le fichier AndroidManifest.xml de l’application. Par exemple :

<manifest ...>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
</manifest>

Pour vous assurer que le backend d’autorisation correspondant est bien inclus dans votre application, veuillez indiquer à votre système de compilation l’emplacement de votre fichier ` AndroidManifest.xml ` personnalisé ou utiliser la fonction ` qt_add_android_permission()`.

Les noms des autorisations concernées sont décrits dans la documentation relative à chaque type d'autorisation.

Remarque : lors de l'utilisation de cette API, la balise <!-- %%INSERT_PERMISSIONS --> doit être présente dans le fichier AndroidManifest.xml. Pour plus d'informations sur l'utilisation de cette balise, consultez la section « Autorisations et fonctionnalités Qt ».

Autorisations disponibles

Les types d'autorisations suivants sont disponibles :

QBluetoothPermission

Accéder aux périphériques Bluetooth

QCalendarPermission

Accéder au calendrier de l'utilisateur

QCameraPermission

Accéder à l'appareil photo pour prendre des photos ou enregistrer des vidéos

QContactsPermission

Accéder aux contacts de l'utilisateur

QLocationPermission

Accéder à la localisation de l'utilisateur

QMicrophonePermission

Accéder au microphone pour écouter ou enregistrer du son

Remarque : les types d'autorisations disponibles couvrent les fonctionnalités principales des modules Qt tels que Qt Multimedia et Qt Positioning, mais n'englobent pas toutes les autorisations spécifiques à chaque plateforme. Les types d'autorisations personnalisés ne sont actuellement pas pris en charge.

Bonnes pratiques

Afin de garantir la meilleure expérience utilisateur possible, nous vous recommandons d'adopter les bonnes pratiques suivantes pour la gestion des autorisations des applications :

  • Demandez uniquement l'ensemble minimal d'autorisations nécessaires. Par exemple, si vous n'avez besoin que d'un accès au microphone, ne demandez pas l'autorisation d'accès à l'appareil photo par mesure de précaution. Utilisez les propriétés propres à chaque type d'autorisation pour limiter encore davantage la portée de l'autorisation, par exemple QContactsPermission::setAccessMode() pour demander un accès en lecture seule.
  • Demandez les autorisations en réponse à des actions spécifiques de l’utilisateur. Par exemple, attendez que l’utilisateur appuie sur le bouton d’enregistrement audio pour demander l’autorisation d’accès au microphone. Le fait d’associer la demande d’autorisation à une action spécifique permet à l’utilisateur de mieux comprendre pourquoi cette autorisation est nécessaire. Ne demandez pas toutes les autorisations nécessaires au démarrage de l’application.
  • Fournissez des informations contextuelles et des explications supplémentaires si nécessaire. Il arrive parfois que l’action de l’utilisateur ne fournisse pas suffisamment de contexte. Envisagez d’afficher une boîte de dialogue explicative après que l’utilisateur a lancé l’action, mais avant de demander l’autorisation, afin que l’utilisateur soit conscient de ce qui va se passer lorsque la boîte de dialogue d’autorisation du système s’affichera par la suite.
  • Soyez transparent et explicite quant aux raisons pour lesquelles les autorisations sont nécessaires. Dans les boîtes de dialogue d’explication et les descriptions d’utilisation, expliquez clairement pourquoi une autorisation particulière est nécessaire pour que votre application puisse offrir une fonctionnalité spécifique, afin que les utilisateurs puissent prendre des décisions en connaissance de cause.
  • Prévoyez les cas de refus d’autorisation. Les autorisations que vous demandez peuvent être refusées pour diverses raisons. Vous devez toujours anticiper cette situation, en adaptant de manière fluide l’expérience offerte par votre application et en fournissant à l’utilisateur des explications claires sur la situation.
  • Ne demandez jamais d’autorisations à une bibliothèque. La demande d’autorisations doit être effectuée au plus près de l’utilisateur, là où les informations nécessaires pour prendre les bonnes décisions concernant les points ci-dessus sont disponibles. Les bibliothèques peuvent vérifier les autorisations afin de s’assurer qu’elles disposent des prérequis pour fonctionner, mais si une autorisation est indéterminée ou refusée, cela doit être signalé via l’API de la bibliothèque, afin que l’application puisse à son tour demander les autorisations nécessaires.

Voir également «Fichiers de liste de propriétés d’informations » et « Qt Creator: Modification des fichiers de manifeste ».

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.