web-dev-qa-db-fra.com

Demander une autorisation pour l'appareil photo et la bibliothèque dans iOS 10 - Info.plist

J'ai implémenté un WKWebView dans une application. Il y a un fichier dans la page Web affichée où il faut importer une image à partir de photos. Chaque fois que j'appuie sur cette entrée et que je sélectionne "Prendre une photo" ou "Photothèque", l'application se bloque soudainement, ce qui, je le crois, tient au fait que l'application ne dispose pas de l'autorisation nécessaire pour prendre une photo ou importer de la bibliothèque.

Comment puis-je envoyer une demande d'autorisation lorsque l'utilisateur sélectionne l'une des méthodes mentionnées (Prendre une photo ou Photothèque)?

J'utilise Swift 3.0 avec WKWebView.

66
Alamri

Vous devez ajouter l'autorisation ci-dessous dans Info.plist. Plus de références

Caméra:

Key       :  Privacy - Camera Usage Description   
Value     :  $(PRODUCT_NAME) camera use

Photo:

Key       :  Privacy - Photo Library Usage Description    
Value     :  $(PRODUCT_NAME) photo use
92
Kirit Modi

Vous pouvez également demander un accès par programme, ce que je préfère car dans la plupart des cas, vous devez savoir si vous avez utilisé l'accès ou non.

mise à jour de Swift 4:

    //Camera
    AVCaptureDevice.requestAccess(for: AVMediaType.video) { response in
        if response {
            //access granted
        } else {

        }
    }

    //Photos
    let photos = PHPhotoLibrary.authorizationStatus()
    if photos == .notDetermined {
        PHPhotoLibrary.requestAuthorization({status in
            if status == .authorized{
                ...
            } else {}
        })
    }

Vous ne partagez pas le code, je ne peux donc pas savoir si cela vous serait utile, mais en général, utilisez-le comme meilleure pratique.

102
George Vardikos

Swift 4

Fichier: Info.plist

Caméra

<key>NSCameraUsageDescription</key>
<string>camera description.</string>

Photos

<key>NSPhotoLibraryUsageDescription</key>
<string> photos description.</string>

Sauvegarder les photos

  <key>NSPhotoLibraryAddUsageDescription</key>
  <string> photos add description.</string>

Emplacement

<key> NSLocationWhenInUseUsageDescription</key>
<string> location description.</string>

Apple Music:

<key>NSAppleMusicUsageDescription</key>
<string>My description about why I need this capability</string>

Calendrier

<key>NSCalendarsUsageDescription</key>
<string>My description about why I need this capability</string>

Siri

<key>NSSiriUsageDescription</key>
<string>My description about why I need this capability</string>
28
Vishal Vaghasiya

Utilisez les paramètres de plist mentionnés ci-dessus et l'accesseur approprié (AVCaptureDevice ou PHPhotoLibrary), mais avertissez-les également et envoyez-les à vos paramètres si vous en avez vraiment besoin, comme ceci:

Swift 4.0 et 4.1

func proceedWithCameraAccess(identifier: String){
    // handler in .requestAccess is needed to process user's answer to our request
    AVCaptureDevice.requestAccess(for: .video) { success in
      if success { // if request is granted (success is true)
        DispatchQueue.main.async {
          self.performSegue(withIdentifier: identifier, sender: nil)
        }
      } else { // if request is denied (success is false)
        // Create Alert
        let alert = UIAlertController(title: "Camera", message: "Camera access is absolutely necessary to use this app", preferredStyle: .alert)

        // Add "OK" Button to alert, pressing it will bring you to the settings app
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
          UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!)
        }))
        // Show the alert with animation
        self.present(alert, animated: true)
      }
    }
  }
21
Joel Teply

Fichier: Info.plist

Pour Caméra:

<key>NSCameraUsageDescription</key>
<string>You can take photos to document your job.</string>

Pour Photothèque, vous souhaiterez que celui-ci permette à l'utilisateur de l'application de parcourir la photothèque.

<key>NSPhotoLibraryUsageDescription</key>
<string>You can select photos to attach to reports.</string>
19
Ed of the Mountain

Swift 4 Le moyen le plus simple d’ajouter des autorisations sans avoir à le faire par programme consiste à ouvrir votre fichier info.plist et à sélectionner le signe + en regard de Informations, propriété et faites défiler la liste déroulante jusqu'aux options de confidentialité et sélectionnez Confidentialité Description d'utilisation de la caméra pour accéder à la caméra ou Confidentialité Description de l'utilisation de la photothèque pour accéder à la photothèque. Renseignez la valeur Chaîne à droite une fois que vous avez choisi d’inclure le texte que vous souhaitez afficher à votre utilisateur lorsque la notification s’ouvre pour vous demander des autorisations. Camera/Photo Library permission

10
elarcoiris

Pour demander la permission pour l'application photo, vous devez ajouter ce code (Swift 3):

PHPhotoLibrary.requestAuthorization({ 
       (newStatus) in 
         if newStatus ==  PHAuthorizationStatus.authorized { 
          /* do stuff here */ 
    } 
})
9
marcomoreira92