Avec la nouvelle fonctionnalité d'iOS 8, si vous utilisez un appareil photo dans l'application, il vous demandera l'autorisation d'accéder à l'appareil photo, puis lorsque vous essayez de reprendre la photo, il vous demandera l'autorisation d'accéder à la photothèque. La prochaine fois que je lance l'application, je souhaite vérifier si l'appareil photo et la photothèque y ont accès.
Pour la caméra, je vérifie par
if ([AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo] == AVAuthorizationStatusDenied)
{
// do something
}
Je recherche quelque chose de similaire pour la photothèque.
ios
ios8
phphotolibrary
tech_humain
la source
la source
Je sais que cela a déjà été répondu, mais juste pour développer la réponse @Tim, voici le code dont vous avez besoin (iOS 8 et supérieur):
N'oubliez pas de
#import <Photos/Photos.h>
Si vous utilisez Swift 3.0 ou supérieur, vous pouvez utiliser le code suivant:
N'oubliez pas de
import Photos
la source
Tout comme la formalité, la version Swift 2.X :
Et Swift 3 / Swift 4 :
la source
import Photos
, si vous voulez utiliser PHPhotoLibraryVoici un guide complet pour iOS 8+ (sans ALAssetLibrary):
Tout d'abord, nous devons fournir une description de l'utilisation car elle est maintenant requise par PHPhotoLibrary.
Pour ce faire, nous devons ouvrir le
info.plist
fichier, trouver la cléPrivacy - Photo Library Usage Description
et lui fournir une valeur. Si la clé n'existe pas, créez-la simplement.Voici une image par exemple:
Assurez-vous également que la valeur de la clé
Bundle name
n'est pas vide dans leinfo.plist
fichier.Maintenant, lorsque nous avons une description, nous pouvons normalement demander une autorisation en appelant la
requestAuthorization
méthode:REMARQUE 1:
requestAuthorization
n'affiche pas d'alerte à chaque appel. Il s'affiche une fois tous les temps, enregistre la réponse de l'utilisateur et la renvoie à chaque fois au lieu d'afficher à nouveau l'alerte. Mais comme ce n'est pas ce dont nous avons besoin, voici un code utile qui affiche toujours une alerte chaque fois que nous avons besoin d'une autorisation (avec redirection vers les paramètres):Problème courant 1: certains utilisateurs se plaignent que l'application n'affiche pas d'alerte après avoir effectué les modifications mentionnées ci-dessus dans le
info.plist
fichier.Solution: pour les tests, essayez de passer
Bundle Identifier
du fichier projet à autre chose, nettoyez et reconstruisez l'application. Si cela a commencé à fonctionner, tout va bien, renommez-le.Problème courant 2: il existe un cas spécifique lorsque les résultats de l'extraction ne sont pas mis à jour (et les vues qui utilisaient des images de ces demandes de récupération toujours vides en conséquence) lorsque l'application obtient des autorisations sur les photos, tout en s'exécutant comme promis dans la documentation.
En fait, cela se produit lorsque nous utilisons un mauvais code comme celui-ci:
Dans ce cas, si l'utilisateur refuse d'accorder des autorisations,
viewDidLoad
puis accède aux paramètres, est autorisé et revient à l'application, les vues ne seront pas actualisées car les[self reloadCollectionView]
demandes de récupération n'ont pas été envoyées.Solution: nous devons simplement appeler
[self reloadCollectionView]
et faire d'autres requêtes de récupération avant de demander une autorisation comme celle-ci:la source
Je l'ai fait comme ça:
Et j'envoie ce que je dois faire comme bloc en fonction du succès ou de l'échec.
la source
MISE À JOUR pour: SWIFT 3 IOS10
Remarque: importez des photos dans AppDelegate.swift comme suit
// AppDelegate.swift
importer UIKit
importer des photos
...
Réponse mise à jour de Alvin George
la source
L'utilisation d'ALAssetsLibrary devrait fonctionner:
la source
la source
Voici un petit et simple extrait que j'utilise habituellement.
la source
Swift 2.0+
Sur la base d'une combinaison de réponses ici, j'ai créé une solution pour moi-même. Cette méthode vérifie uniquement s'il n'y a pas d'autorisation.
Nous avons une méthode
pickVideo()
qui nécessite l'accès aux photos. Si ce n'est pas le cas,.Authorized
demandez la permission.Si l'autorisation n'est pas donnée,
pickVideo()
ne sera pas appelée et l'utilisateur ne peut pas sélectionner une vidéo.Tant que l'utilisateur n'a pas donné un accès complet aux photos, vous pouvez éviter de le laisser choisir "ou planter" votre application.
la source