Bon, vous pouvez déjà rassembler les éléments des réponses et des commentaires, mais pour essayer de raconter une histoire plus complète...
Dans iOS 11, UIImagePickerController
fonctionne comme un processus distinct de votre application. Cela signifie que :
- Votre application ne peut pas voir l'ensemble de la bibliothèque Photos de l'utilisateur. Elle obtient un accès en lecture seule pour le ou les éléments choisis par l'utilisateur dans le sélecteur d'images.
- En raison de (1), votre application n'a pas besoin de l'autorisation standard de confidentialité pour accéder à la bibliothèque Photos. L'utilisateur choisit explicitement une ressource spécifique (ou plusieurs) pour l'utiliser dans votre application, ce qui signifie que l'utilisateur accorde à votre application la permission de lire la ou les ressources en question.
Vous pouvez en savoir plus à ce sujet dans la conférence WWDC17 sur PhotoKit .
(Au fait, ce modèle correspond à ce que vous avez vu dans le cadre des contacts depuis iOS 9 ; si vous affichez le sélecteur de contacts, votre application ne reçoit qu'un dépôt unique d'informations sur le ou les contacts choisis par l'utilisateur, et non un accès permanent en lecture/écriture à la base de données des contacts, de sorte que le sélecteur de contacts ne nécessite pas d'autorisation spéciale de confidentialité).
PHPhotoLibrary
et son statut d'autorisation reflètent l'autorisation globale de lecture/écriture pour l'accès aux photos que les utilisateurs peuvent contrôler dans Paramètres > Confidentialité. (C'est là que votre Info.plist a besoin de NSPhotoLibraryUsageDescription
.) Toute utilisation du PHPhotoLibrary
requiert cette autorisation, que votre application utilise cette API uniquement en écriture ou uniquement en lecture. Cela est vrai depuis l'introduction de PhotoKit dans iOS 8.
Si vous n'utilisez pas PHPhotoLibrary
, PHAsset
etc., il existe des options d'autorisation plus restreintes qui sont nouvelles dans iOS 11 (et qui ne font pas partie de l'API Photos.framework) :
- Comme indiqué ci-dessus,
UIImagePickerController
n'a pas besoin de l'autorisation générale des paramètres de confidentialité car chaque utilisation accorde un accès en lecture unique pour les actifs spécifiques choisis.
-
Si vous souhaitez uniquement ajouter de nouvelles ressources à la bibliothèque de photos, utilisez la fonction UIImageWriteToSavedPhotosAlbum
ou UISaveVideoAtPathToSavedPhotosAlbum
. Avec ceux-ci, vous pouvez mettre NSPhotoLibraryAddUsageDescription
dans votre Info.plist - alors les paramètres de confidentialité du système indiqueront clairement à l'utilisateur qu'il ne vous donne pas l'autorisation de voir ou de modifier les ressources existantes, mais seulement d'en ajouter de nouvelles.
Si l'utilisateur accorde une autorisation d'ajout, elle ne s'applique qu'à ces fonctions UIKit - en essayant d'utiliser PHPhotoLibrary
demandera toujours (et exigera la clé Info.plist pour) un accès en lecture/écriture.
Voir cette partie du discours de la WWDC17 pour en savoir plus sur le paramètre de confidentialité complémentaire.
0 votes
Quelle clé avez-vous ajouté dans info.plist ?
0 votes
Confidentialité - Description de l'utilisation de la photothèque
0 votes
Avez-vous essayé avec un simulateur ou un appareil ?
1 votes
Je teste sur un appareil
0 votes
@LeoDabus merci, mais la question est de savoir pourquoi je suis toujours autorisé à présenter le sélecteur si mes paramètres disent accès aux photos : "jamais"
0 votes
L'appareil est-il jailbreaké ?
0 votes
@TofaaniKaanudo non
2 votes
@gvuksic J'ai remarqué dans mon appareil aussi. Même si j'ai défini la permission à Jamais mais il me permet toujours de choisir des photos.
0 votes
Fou de ce problème, j'ai vérifié dans le simulateur même il ne sera pas demander la permission d'accéder à la bibliothèque de photos.
0 votes
IOS 11 => Également confronté à l'autorisation d'accès stackoverflow.com/questions/46405881/
0 votes
@gvuksic Du nouveau sur cette question ?