Какая разница между 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 и прочитайте его.
Для получения дополнительной информации о:
Ответ 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 для "Сохранить изображение".