Какая разница между NSPhotoLibraryAddUsageDescription и NSPhotoLibraryUsageDescription?

Мое приложение сегодня разбилось, обновляясь на Xcode9, тестируя на iOS11. После добавления NSPhotoLibraryAddUsageDescription он работает, даже у меня уже есть NSPhotoLibraryUsageDescription.

Я читал о них, один из них поддерживался с iOS6, один iOS11, но Apple не упоминала, какая разница между ними. https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW73

Если я сохраню новый (NSPhotoLibraryAddUsageDescription), он будет работать и для iOS 8, или я должен сохранить их оба?

Ответ 1

Чтобы ответить на последний вопрос самостоятельно:

Вам нужно объявить как NSPhotoLibraryUsageDescription и NSPhotoLibraryAddUsageDescription чтобы оно NSPhotoLibraryAddUsageDescription на iOS 9, 10.3 и 11.

Технически это отличается. Раньше я не объявлял NSPhotoLibraryUsageDescription, он отлично работает на iOS 9 и 11, но не работает и вылетает на iOS 10.3.

Это действительно плохая версия, контролируемая Apple, в то время как старшая версия не соответствует и не поддерживает разрешение более старой версии.

Ответ 2

Просто получить из официального документа Apple

Просто нажмите на изображение выше для ZOOM и прочитайте его.

Для получения дополнительной информации о:

  • NSPhotoLibraryAddUsageDescription: Если вы хотите сохранить фотографию/изображение в вашей библиотеке фотографий. Для iOS11 and +

  • NSPhotoLibraryUsageDescription: Если вы хотите получить доступ к своей библиотеке фотографий. Для iOS10 and +

Ответ 3

Как я вижу в документе, разница между двумя:

  • NSPhotoLibraryAddUsageDescription: У вас есть разрешение на запись только, без чтения.

  • NSPhotoLibraryUsageDescription: вы можете читать и записывать в Фото.

Из документации Apple для NSPhotoLibraryUsageDescription:

"Хотя эти ключи управляют доступом для чтения и записи к библиотеке фотографий пользователей, лучше всего использовать NSPhotoLibraryAddUsageDescription, если вашему приложению нужно только добавить активы в библиотеку и не нужно читать какие-либо активы."

Ответ 4

Тебе понадобятся оба.
Поскольку после того, как я попытался использовать UIActivityViewController для сохранения изображения в библиотеку, у меня версия iphone 11.3, я использую только NSPhotoLibraryUsageDescription и он NSPhotoLibraryUsageDescription потому что мне нужна NSPhotoLibraryAddUsageDescription.
Но ios 9.3 не вылетает.

Ответ 5

Разница в доступе для записи зависит от API, запрашивающего разрешение, а также от версии для iOS, поэтому вам нужны оба варианта.

Мое приложение уже имело NSPhotoLibraryUsageDescription, чтобы использовать PHPhotoLibrary для сохранения изображений.

На iOS 11 это все еще работает, но если мое приложение еще не получило разрешения, то совместное использование изображения с помощью "Сохранить изображение" в UIDocumentInteractionController вызывает сбой с предупреждением о NSPhotoLibraryAddUsageDescription. Если разрешение уже было предоставлено через PHPhotoLibrary, мне не нужно указывать NSPhotoLibraryAddUsageDescription для "Сохранить изображение".