web-dev-qa-db-fra.com

Quelle est la différence entre NSPhotoLibraryAddUsageDescription et NSPhotoLibraryUsageDescription?

Mon application s'est écrasée aujourd'hui lors de la mise à jour sur Xcode9 et des tests sur iOS11 . Après l'ajout de NSPhotoLibraryAddUsageDescription, alors cela fonctionne, même si j'avais déjà NSPhotoLibraryUsageDescription.

J'ai lu à leur sujet, un supporté depuis iOS6, un iOS11 mais Apple n'a pas mentionné la différence qui les sépare . https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/ Articles/CocoaKeys.html # // Apple_ref/doc/uid/TP40009251-SW73

Si je conserve le nouveau (NSPhotoLibraryAddUsageDescription), cela fonctionnera-t-il également pour iOS 8 ou devrai-je les conserver tous les deux?

29
TomSawyer

Pour répondre seul à la dernière question:

Vous devez déclarer à la fois NSPhotoLibraryUsageDescription et NSPhotoLibraryAddUsageDescription pour que cela fonctionne sous iOS 9, 10.3 et 11.

Techniquement, c'est différent… .J'ai l'habitude de ne pas déclarer NSPhotoLibraryUsageDescription, cela fonctionne très bien sur iOS 9 et 11 mais a échoué et s'est écrasé sur iOS 10.3.

C'est une très mauvaise version contrôlant d'Apple alors que la version supérieure ne s'y conforme pas et ne prend pas en charge les autorisations des versions antérieures.

4
TomSawyer

Obtenir simplement du document officiel Apple 

Cliquez simplement sur l'image ci-dessus pour ZOOM et lisez-la.

Pour plus d'informations sur: 

24
Govaadiyo

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

  • NSPhotoLibraryAddUsageDescription: Vous êtes autorisé à écrire uniquement, pas de lecture. 

  • NSPhotoLibraryUsageDescription: vous pouvez lire et écrire sur Photos.

Dans les documentations Apple pour NSPhotoLibraryUsageDescription:

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

8
Tien

Tu vas avoir besoin des deux .
Parce qu'une fois que j'ai essayé d'utiliser UIActivityViewController pour enregistrer une image dans une bibliothèque, ma version d'iphone est la 11.3, je n'utilise que NSPhotoLibraryUsageDescription et son plantage, car j'ai besoin de NSPhotoLibraryAddUsageDescription.
Mais iOS 9.3 ne plante pas.

2
Linh Quang Pham

Il existe une différence entre l'accès en écriture et le fait que l'API demande l'autorisation ainsi que la version iOS. Vous avez donc besoin des deux.

Mon application avait déjà NSPhotoLibraryUsageDescription afin d’utiliser PHPhotoLibrary pour enregistrer des images. 

Sur iOS 11, cela fonctionne toujours, mais si mon application n'a pas encore obtenu l'autorisation, le partage d'une image via "Enregistrer l'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 "Enregistrer l'image".

1
a4o