36 votes

Quelle est la différence entre NSPhotoLibraryAddUsageDescription et NSPhotoLibraryUsageDescription ?

Mon application s'est plantée aujourd'hui lors de la mise à jour sur Xcode9, testée sur iOS11. Après avoir ajouté NSPhotoLibraryAddUsageDescription alors ça marche, même si j'avais déjà NSPhotoLibraryUsageDescription .

J'ai lu des articles à leur sujet, l'un est supporté depuis iOS6, l'autre depuis iOS11 mais Apple n'a pas mentionné la différence entre les deux. https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW73

Si je garde le nouveau ( NSPhotoLibraryAddUsageDescription ), est-ce que cela fonctionnera pour iOS 8 aussi ou je dois garder les deux ?

35voto

Govaadiyo Points 1141

Récupération simple du document officiel d'Apple

Il suffit de cliquer sur l'image ci-dessus pour la ZOOM et la lire.

Pour plus d'informations sur :

4 votes

Je l'ai lu, il ne dit rien, s'il vous plaît répondez à mes questions ci-dessus. Les deux donnent l'accès en lecture et en écriture, quelle est la différence entre eux, lequel dois-je garder pour obtenir les deux versions d'ios supportant

0 votes

Vous avez vu ma capture d'écran ? Si vous voulez ajouter une photo/image dans la bibliothèque, vous devez ajouter NSPhotoLibraryAddUsageDescription dans votre info.plist

1 votes

NSPhotoLibraryUsageDescription peut le faire aussi, depuis iOS 6. Although this keys governs read and write access to the user’s photo library,

13voto

Tien Points 1095

Comme je peux le voir dans le document, la différence entre deux est :

  • NSPhotoLibraryAddUsageDescription : Vous avez la permission d'écrire seulement, pas de lecture.

  • NSPhotoLibraryUsageDescription : Vous pouvez lire et écrire sur les photos.

Extrait des documentations Apple pour NSPhotoLibraryUsageDescription :

"Bien que cette clé régisse l'accès en lecture et en écriture à la photothèque de l'utilisateur, il est préférable d'utiliser NSPhotoLibraryAddUsageDescription si votre application a seulement besoin d'ajouter des actifs à la bibliothèque et n'a pas besoin de lire d'actifs. "

3 votes

Il n'est pas clair comment déclencher le dialogue de NSPhotoLibraryAddUsageDescription - Cependant, il fait définitivement planter les applications sans lui.

0 votes

Pourriez-vous essayer d'appeler UIImageWriteToSavedPhotosAlbum ?

0 votes

Utilisation de PHPhotoLibrary.requestAuthorization() semble fonctionner - mais on ne sait pas exactement quelle touche est utilisée.

9voto

TomSawyer Points 174

Pour répondre à la dernière question par moi-même :

Vous devez déclarer les deux NSPhotoLibraryUsageDescription et NSPhotoLibraryAddUsageDescription pour qu'il fonctionne à la fois sur iOS 9, 10.3 et 11.

Techniquement, c'est différent. J'avais l'habitude de ne pas déclarer NSPhotoLibraryUsageDescription Il fonctionne bien sous iOS 9 et 11 mais échoue et se plante sous iOS 10.3.

Il s'agit d'un très mauvais contrôle de version de la part d'Apple alors que la version supérieure ne respecte pas et ne supporte pas l'autorisation de la version précédente.

2voto

Linh Quang Pham Points 65

Tu vas avoir besoin des deux.
Parce qu'une fois que j'ai essayé d'utiliser UIActivityViewController pour sauvegarder l'image dans la bibliothèque, la version de mon iphone est 11.3, j'utilise seulement NSPhotoLibraryUsageDescription et c'est un accident parce que j'ai besoin NSPhotoLibraryAddUsageDescription .
Mais ios 9.3 ne se plante pas.

1 votes

Avez-vous trouvé comment contrôler la permission pour NSPhotoLibraryAddUsageDescription ? Il semble qu'il ne renvoie des résultats que pour NSPhotoLibraryUsageDescription.

2voto

a4o Points 51

Il y a une différence pour l'accès en écriture basée sur l'API demandant la permission ainsi que sur la version iOS, donc vous avez besoin des deux.

Mon application avait déjà NSPhotoLibraryUsageDescription afin d'utiliser PHPhotoLibrary pour sauvegarder les images.

Sous iOS 11, cela fonctionne toujours, mais si mon application n'a pas encore obtenu d'autorisation, le partage d'une image via "Save Image" dans un UIDocumentInteractionController provoque un crash avec un avertissement concernant NSPhotoLibraryAddUsageDescription. Si l'autorisation a déjà été accordée via PHPhotoLibrary, je ne semble pas avoir besoin de NSPhotoLibraryAddUsageDescription pour "Save Image".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X