Camera Permission dans les applications mobiles — ce que c’est, types d’accès et comment ça fonctionne

Auteur : IT Sectr Publié le : 2026-05-21 Temps de lecture : 8 min

Camera Permission est une autorisation qu’une application mobile demande à l’utilisateur pour accéder à la caméra de l’appareil. Sans elle, l’application ne peut pas prendre de photos, scanner des codes QR ou lancer des appels vidéo. Selon Android Developers, 2024, toutes les applications utilisant la caméra sur Android 6.0 et supérieur sont tenues de demander l’autorisation au moment de l’exécution via une boîte de dialogue système.

Points clés

  • Camera Permission est une autorisation obligatoire pour les applications qui travaillent avec la caméra de l’appareil sur iOS et Android.
  • Android utilise Manifest.permission.CAMERA avec une demande obligatoire au moment de l’exécution à partir de l’API 23.
  • iOS nécessite l’ajout de la clé NSCameraUsageDescription dans Info.plist avec une description de la raison d’utilisation de la caméra.
  • Demande contextuelle (par exemple, en appuyant sur le bouton « Prendre une photo ») augmente considérablement le taux d’approbation.
  • Refus d’accès doit être géré via un scénario alternatif : sélection dans la galerie ou téléchargement d’un fichier.

Qu’est-ce que Camera Permission ?

Camera Permission est une autorisation système qui régule l’accès des applications à la caméra d’un appareil mobile. Les plateformes mobiles considèrent la caméra comme une ressource sensible car elle permet d’enregistrer des vidéos et de photographier l’environnement de l’utilisateur en temps réel.

Sur Android, l’autorisation CAMERA appartient à la catégorie des autorisations dangereuses et nécessite une demande obligatoire au moment de l’exécution. Sur iOS, l’ajout de la clé NSCameraUsageDescription dans Info.plist est une condition obligatoire pour toute application qui accède à la caméra. Sans cette clé, l’application plantera en essayant d’ouvrir la caméra.

Selon une étude de Statista (2024), environ 68 % des applications mobiles dans le top 100 de l’App Store utilisent la caméra d’une manière ou d’une autre : du scan de codes QR à la capture complète de photos et vidéos. Dans le même temps, 37 % des utilisateurs refusent l’accès à la caméra s’ils ne comprennent pas pourquoi l’application a besoin de cette autorisation.

Camera Permission sur Android

Camera Permission sur Android est demandée via une déclaration dans le manifeste suivie d’une demande au moment de l’exécution. À partir d’Android 6.0, l’autorisation CAMERA ne peut pas être obtenue uniquement à l’installation — l’utilisateur doit confirmer explicitement l’accès.

Déclaration dans AndroidManifest.xml

Pour utiliser la caméra sur Android, vous devez ajouter la déclaration correspondante au fichier manifeste. Sans elle, le système ne permettra pas à l’application d’ouvrir la caméra même avec une demande au moment de l’exécution.

xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />

L’attribut android:required=false pour uses-feature permet d’installer l’application sur des appareils sans caméra. Ceci est important si la caméra n’est pas un composant obligatoire pour le fonctionnement complet de l’application.

Demande au moment de l’exécution en Kotlin

La demande de Camera Permission est effectuée via l’API Activity Result. Après avoir reçu la réponse, l’application vérifie le statut et lance la caméra ou affiche une explication.

kotlin
private val cameraLauncher =
    registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
    if (success) {
        // Photo enregistrée
        showPhoto(photoUri)
    }
}

private val permissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        openCamera()
    } else {
        showPermissionDenied()
    }
}

fun capturePhoto() {
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        openCamera()
    } else {
        permissionLauncher.launch(Manifest.permission.CAMERA)
    }
}

Fonctionnalités Android 11+

À partir d’Android 11, si l’utilisateur a refusé l’accès à la caméra deux fois, la boîte de dialogue système ne s’affichera plus. Le drapeau Never Ask Again est défini automatiquement, et l’application ne peut que rediriger l’utilisateur vers les paramètres système via Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS). Le développeur doit inclure une vérification de shouldShowRequestPermissionRationale pour afficher un écran préliminaire en temps utile.

Camera Permission sur iOS

Camera Permission sur iOS est gérée via la clé NSCameraUsageDescription dans Info.plist et un appel à AVCaptureDevice.requestAccess. Apple vérifie strictement la justification de la demande : si l’application utilise la caméra d’une manière qui n’est pas évidente pour l’utilisateur, l’App Store peut rejeter l’application.

Configuration d’Info.plist

Une condition obligatoire pour l’accès à la caméra sur iOS est d’ajouter la clé NSCameraUsageDescription au fichier Info.plist. La chaîne de valeur sera affichée dans la boîte de dialogue système comme raison de la demande.

xml
<key>NSCameraUsageDescription</key>
<string>L’application a besoin de l’accès à la caméra pour créer des photos de profil et scanner des codes QR.</string>

Demande en Swift

En Swift, la demande est effectuée via la méthode statique AVCaptureDevice.requestAccess. Après avoir reçu la réponse, l’application traite le statut et démarre la session de capture.

swift
import AVFoundation

func requestCameraAccess() {
    AVCaptureDevice.requestAccess(for: .video) { granted in
        DispatchQueue.main.async {
            if granted {
                self.setupCameraSession()
            } else {
                self.showSettingsAlert()
            }
        }
    }
}

private func setupCameraSession() {
    guard let device = AVCaptureDevice.default(.for: .video)
    else { return }
    do {
        let input = try AVCaptureDeviceInput(device: device)
        let session = AVCaptureSession()
        session.addInput(input)
        session.startRunning()
    } catch {
        print("Camera error: \(error)")
    }
}

Vérification du statut actuel

Avant de demander l’accès à la caméra, il est recommandé de vérifier le statut d’autorisation actuel via AVCaptureDevice.authorizationStatus(for: .video). Cela évite les appels inutiles à la boîte de dialogue système et gère correctement les cas où l’utilisateur a déjà pris une décision. Le statut peut être .notDetermined, .restricted, .denied ou .authorized.

Scénarios d’utilisation de la caméra

Camera Permission est appliquée dans divers scénarios, du simple scan à la capture vidéo complète. Chaque scénario a ses propres exigences de mise en œuvre et de gestion des autorisations.

Scan de codes QR et codes-barres

Sur iOS, AVCaptureMetadataOutput du framework AVFoundation est utilisé pour le scan de codes QR, ce qui nécessite Camera Permission. Sur Android, il est recommandé d’utiliser ML Kit Barcode Scanning de Google. Il est important de noter que le scan de codes QR utilise la caméra elle-même, pas une bibliothèque d’analyse d’images — par conséquent, Camera Permission est obligatoire.

Capture de photos et vidéos

La capture standard de photos ou de vidéos nécessite Camera Permission à la fois sur iOS et Android. Sur Android, vous pouvez utiliser Intent(MediaStore.ACTION_IMAGE_CAPTURE), qui ouvre l’application caméra système — dans ce cas, l’application système demande l’autorisation, pas la vôtre. Cependant, pour un aperçu de la caméra dans l’application (CameraX, Camera2 API), votre propre autorisation est requise.

Appels vidéo et RA

Les applications d’appels vidéo (Zoom, Google Meet) et de réalité augmentée (ARCore, ARKit) demandent Camera Permission pour capturer la vidéo depuis la caméra avant ou arrière. Dans ce cas, la demande doit être expliquée avec une attention particulière, car l’utilisateur peut ne pas s’attendre à ce qu’une application d’essayage de meubles en RA demande la caméra.

Configuration des paramètres de capture

Lorsque vous travaillez avec la caméra sur iOS, vous pouvez configurer les paramètres de capture via AVCaptureDeviceInput et AVCapturePhotoOutput. Sur Android, CameraX simplifie la configuration via les callbacks ImageCapture, VideoCapture et Preview. Pour chaque paramètre, vous devez spécifier la résolution souhaitée, le niveau de zoom et le mode de mise au point. Le choix de la bonne configuration de capture affecte directement les performances de l’application et la consommation de la batterie.

Gestion des erreurs lors du travail avec la caméra

Diverses erreurs peuvent survenir lors du travail avec la caméra. La caméra peut être occupée par une autre application, désactivée dans les paramètres de confidentialité du système ou absente de l’appareil. Sur Android, il est recommandé de gérer CameraAccessException lors de l’appel à CameraManager.openCamera. Sur iOS, vérifiez AVCaptureDevice.authorizationStatus et gérez correctement le refus en proposant à l’utilisateur d’aller dans les paramètres pour activer l’accès. Vérifiez toujours la disponibilité de la caméra sur l’appareil avant de demander l’autorisation en utilisant PackageManager.hasSystemFeature. Une telle vérification évite les demandes inutiles sur les appareils sans caméra et améliore l’expérience utilisateur.

Optimisation des performances de la caméra

L’optimisation des performances lors du travail avec la caméra est importante pour un fonctionnement fluide de l’application. La capture de vidéo en haute résolution consomme des ressources importantes du processeur et de la batterie.

Sur iOS, utilisez AVCaptureSessionPresetMedium au lieu de la résolution maximale si l’application n’a pas besoin de capture en 4K. Sur Android, CameraX permet de configurer ImageCapture avec une résolution cible via ImageCaptureConfig.Builder. Il est également important de libérer la caméra lorsque l’application passe en arrière-plan et de la réacquérir lors du retour. C’est une pratique standard recommandée par Google et Apple pour économiser la batterie.

Bonnes pratiques pour demander l’accès à la caméra

Les bonnes pratiques aident à augmenter le taux d’approbation de Camera Permission et à éviter le rejet de l’application par l’App Store ou Google Play.

Utilisez un aperçu pour expliquer

Avant d’afficher la boîte de dialogue système, montrez un écran avec un exemple de la façon dont la caméra sera utilisée : une image d’interface de scan, un cadre pour photo de profil, un exemple de code QR reconnu. L’explication visuelle fonctionne mieux que le texte. Selon UX Movement (2024), l’ajout d’un aperçu visuel augmente le taux d’approbation à 72 %.

Demandez l’autorisation au moment de l’action

Ne demandez jamais Camera Permission au premier lancement de l’application. Un utilisateur qui vient d’ouvrir l’application refusera probablement s’il ne comprend pas le contexte. Demandez l’accès strictement lorsque l’utilisateur appuie sur un bouton nécessitant la caméra : « Prendre une photo de profil », « Scanner un code », « Lancer un appel vidéo ». Un déclencheur contextuel rend la demande plus significative.

Proposez une alternative

Si l’utilisateur refuse Camera Permission, proposez un moyen alternatif d’effectuer l’action : sélectionner une photo depuis la galerie, saisir manuellement les données du code QR, télécharger une image depuis l’appareil. Le refus ne doit pas bloquer complètement les fonctionnalités de l’application — c’est une exigence des recommandations de conception de Google Play et de l’App Store.

Foire aux questions

Que se passe-t-il si l’utilisateur refuse Camera Permission ?

Si l’application plante en essayant d’ouvrir la caméra sans autorisation, vous obtiendrez une erreur. Vous devez vérifier le statut à l’avance via checkSelfPermission sur Android ou authorizationStatus sur iOS et proposer un scénario alternatif.

Camera Permission est-elle nécessaire pour scanner des codes QR ?

Oui, le scan de codes QR via la caméra nécessite Camera Permission. Une approche alternative consiste à utiliser des bibliothèques de reconnaissance de QR code à partir d’une image sans caméra (par exemple, télécharger une photo avec le code depuis la galerie), mais cela nécessite Photo Library Permission.

Comment demander Camera Permission sur Android sans Activity ?

Dans l’architecture Jetpack Compose, vous pouvez utiliser rememberLauncherForActivityResult avec ActivityResultContracts.RequestPermission dans une fonction composable. Pour les services sans interface utilisateur, une demande directe d’autorisation n’est pas possible — le contrôle doit être passé à une Activity.

Pourquoi mon application iOS plante-t-elle lors de l’ouverture de la caméra ?

La cause la plus probable est l’absence de la clé NSCameraUsageDescription dans Info.plist. Depuis iOS 10, tout accès à AVCaptureDevice sans cette clé provoque un plantage avec une exception NSInvalidArgumentException.

Comment réinitialiser Camera Permission pour les tests ?

Sur Android, réinitialisez les paramètres de l’application via Settings → Apps → [App] → Permissions. Sur iOS, utilisez Settings → [App] → Camera toggle. Pour l’automatisation des tests sur iOS, vous pouvez utiliser XCUITest avec resetAuthorizationStatus.

Résumé

  • Camera Permission est une autorisation obligatoire au moment de l’exécution pour l’accès à la caméra sur les deux plateformes mobiles.
  • Android nécessite de déclarer CAMERA dans le manifeste et de demander via l’API Activity Result avec vérification de shouldShowRequestPermissionRationale.
  • iOS nécessite la clé NSCameraUsageDescription dans Info.plist et un appel à AVCaptureDevice.requestAccess(for: .video).
  • Demande contextuelle augmente le taux d’approbation à 72 % selon UX Movement.
  • Scénarios d’utilisation incluent la capture de photos et vidéos, le scan de codes QR, les appels vidéo et les fonctionnalités de RA.
  • Scénario alternatif en cas de refus (sélection dans la galerie, saisie manuelle) est obligatoire pour répondre aux exigences des magasins d’applications.
  • Écran préliminaire avec explication visuelle réduit considérablement les taux de refus.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi