Проверка конфиденциальности — описание использования дополнений библиотеки фотографий только в iOS

Моему приложению требуется только свойство «Конфиденциальность — описание использования дополнений библиотеки фотографий» в файле plist (приложение записывает в библиотеку фотографий, но не читает).

Я использую этот код для проверки разрешений:

PHPhotoLibrary.requestAuthorization { status in

            if status == .authorized {
                print("Permission granted")
            } else {
                print("Unavailable")
            }

        }

В настройках iOS для моего приложения, хотя в plist требуется только «Добавить фотографии», также указан «Чтение и запись» (??), И приведенный выше код получает авторизованный статус только в том случае, если отмечен «Чтение и запись». (отметка «Добавить только фотографии» просто приводит к тому, что приведенный выше код переходит к оператору else).

Я немного смущен тем, почему «Чтение и запись» даже указан в качестве параметра для моего приложения, когда в моем plist нет «Конфиденциальность - Описание использования библиотеки фотографий».

Любые идеи?


person Lena V    schedule 25.04.2019    source источник


Ответы (1)


Это потому, что вы звоните PHPhotoLibrary.requestAuthorization.

Если все, что вам нужно, это вслепую записать в фотопленку пользователя, не вызывайте PHPhotoLibrary.requestAuthorization. Просто продолжайте и напишите, например. путем вызова UIImageWriteToSavedPhotosAlbum или UISaveVideoAtPathToSavedPhotosAlbum. Среда выполнения запросит авторизацию от вашего имени.

Но если вы хотите взаимодействовать с самой фотобиблиотекой, т.е. через фреймворк Photos, то вам нужна авторизация и запись в разделе Privacy — Photo Library Usage Description, даже если все, что вы собираетесь делать, это писать.


Судя по вашим комментариям, вас может смутить то, что делает requestAuthorization. Он пытается получить разрешение. Если все, что вам нужно знать, это на самом деле текущее состояние авторизации, вызовите вместо этого authorizationStatus.

Однако даже тогда мы говорим о самой библиотеке фотографий и, следовательно, о значении, называемом «Чтение и запись» в настройках.

Если вы хотите узнать, есть ли у вас разрешение на выполнение UIImageWriteToSavedPhotosAlbum или UISaveVideoAtPathToSavedPhotosAlbum, просто вызовите его. Если есть проблема с разрешениями, вы услышите об этом в обработчике завершения.

person matt    schedule 25.04.2019
comment
Все, что мне нужно знать, это то, что если пользователь предоставил доступ на запись к библиотеке, нет ли других вызовов, которые я могу использовать? - person Lena V; 26.04.2019
comment
Если все, что вы хотите сделать, это узнать, каков статус как, позвоните по номеру authorizationStatus(). Но то, о чем вы спрашиваете, это чтение и запись. - person matt; 26.04.2019
comment
Если вы хотите узнать, есть ли у вас разрешение для UIImageWriteToSavedPhotosAlbum или UISaveVideoAtPathToSavedPhotosAlbum, просто позвоните, и в обработчике завершения вам сообщат, есть ли проблема с разрешениями. - person matt; 26.04.2019
comment
Я надеялся, что этот процесс сойдет с рук: 1) Проверьте, предоставлено ли «Конфиденциальность - Описание использования дополнений библиотеки фотографий». 2) Если нет, предложите пользователю получить доступ/обновить свои настройки. 3) Если разрешение предоставлено, создайте изображение, поделитесь им с ActivityViewController, а когда выбрано «сохранить в фотопленке», предположим, что изображение было бы сохранено в порядке (тогда я бы отобразил сообщение об успехе «Сохранено»). Очевидно, что этот поток программы не работает и делает некоторые предположения, будем переосмысливать его. Спасибо за вашу помощь. - person Lena V; 26.04.2019
comment
Правильно, ну, если вам нужно заранее знать, собираетесь ли вы получить разрешение, чтобы решить, запускать ли сложную операцию, то вам нужно использовать Конфиденциальность - Фотобиблиотека Описание использования, authorizationStatus и requestAuthorization (и пользователь увидит чтение и запись). Вы не можете делать то, что вы здесь предполагали; например, вы не можете заранее проверить, если Конфиденциальность — описание использования дополнений библиотеки фотографий, и вы не можете заранее запросить такое разрешение. - person matt; 26.04.2019