Проверьте, удалось ли сохранить в фотопленку

Как проверить, смог ли пользователь сохранить в фотопленку во время activityViewController?

Например, у меня есть контроллер просмотра активности, который предлагает возможность сохранения в фотопленку. После того, как пользователь сохранит изображение, мое приложение отображает подсказку, сообщающую пользователю, что изображение было сохранено. Однако, когда пользователи нажимают значок «Сохранить в фотопленку», ОС предлагает ему предоставить разрешения, чтобы мое приложение могло хранить фотографии в фотопленке. Если пользователь отклоняет разрешение, activityViewController.completionWithItemsHandler все равно возвращает успех, даже если пользователь не сохранил изображение в камеру.

Как я могу проверить, действительно ли пользователь смог сохранить изображение в фотопленке?

activityViewController.completionWithItemsHandler = { activity, success, items, error in
                if success {
                    if let activity = activity {
                        switch activity {
                        case .postToFacebook:
                            self.view.showToast(with: "Successfully posted to Facebook.")
                        case .postToTwitter:
                            self.view.showToast(with: "Successfully posted to Twitter.")
                        case .message:
                            self.view.showToast(with: "Your message has been sent.")
                        case .mail:
                            self.view.showToast(with: "Your email has been sent.")
                        case .saveToCameraRoll:
                            if PHPhotoLibrary.authorizationStatus() == .denied {
                                self.view.show(alertForDeniedPermission(to: .photoLibraryAccess), animated: true)
                            } else {
                                self.view.showToast(with: "Your picture has been saved.")
                            }
                        default:
                            self.view.showToast(with: "Success!")
                        }
                    }
                }

Проверка на PHPhotoLibrary.authorizationStatus() не работает, так как перечисление всегда . notDetermined. Я думаю, потому что мое приложение запрашивает только Privacy - Photo Library Additions Usage Description, а не Privacy - Photo Library Usage Description.


person Samuel Yanez    schedule 15.02.2019    source источник
comment
вам понадобятся эти 3 в списке 1 - Конфиденциальность - Описание использования библиотеки фотографий 2 - Конфиденциальность - Описание использования дополнений библиотеки фотографий 3 - Конфиденциальность - Описание использования библиотеки мультимедиа   -  person Shahzaib Qureshi    schedule 15.02.2019
comment
Код, который вы написали, предназначен для публикации изображения на Facebook. Верно ? почему это должно быть сохранено в фотопленке?   -  person Shahzaib Qureshi    schedule 15.02.2019


Ответы (1)


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

Ваше приложение не определено для статуса авторизации, потому что пользователь не может предоставить или отказать вам в доступе, потому что вы еще не запросили его!

Просто чтобы дать вам некоторый контекст, вот различные случаи с пояснениями, которые может возвращать статус авторизации: (взято из сайт разработчиков Apple.)

случай не определен: для доступа к библиотеке фотографий требуется явное разрешение пользователя, но пользователь еще не предоставил или не отклонил такое разрешение.

case restricted: вашему приложению не разрешен доступ к библиотеке фотографий, и пользователь не может предоставить такое разрешение.

case отказано: пользователь явным образом запретил вашему приложению доступ к библиотеке фотографий.

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

person lajosdeme    schedule 15.02.2019