Удалить последний снимок экрана, сделанный в iOS => 9 без авторизации пользователя? - PullRequest
0 голосов
/ 10 января 2019

У меня есть требование отключить создание скриншота на устройстве iOS. Так как Apple не поддерживает это, я пытаюсь обойти еще один обходной путь - получить уведомление, когда снимок экрана сделан с использованием UIApplicationUserDidTakeScreenshotNotification, получить последнюю фотографию из фотогалереи и удалить ее, как показано ниже:

func deleteLastTakenScreenshotFromLibrary() {
    let fetchOptions: PHFetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
    let fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)

    if (fetchResult.firstObject != nil) {
        var firstAsset: PHAsset = fetchResult.firstObject as! PHAsset
        let arrayToDelete = NSArray(object: firstAsset)
        PHPhotoLibrary.shared().performChanges( {
            PHAssetChangeRequest.deleteAssets(arrayToDelete)},
                                                            completionHandler: {
                                                                success, error in
                                                                print("Finished deleting asset. %@", (success ? "Success" : error))
        })
    }

Но здесь я обнаружил 2 проблемы -

a) .app запрашивает разрешение у пользователя, например Allow <App Name> to delete this photo? This photo will be deleted from iCloud Photo Library on all your devices.

b). После нажатия allow приложение не удаляет последнюю фотографию окончательно.

Даже я добавил ниже разрешения в info.plist

1). Privacy - Photo Library Usage Description

2). Privacy - Media Library Usage Description

Я не знаю, как я могу выполнить это требование. Пожалуйста, помогите, ваша помощь очень ценится. Благодарю. :)

1 Ответ

0 голосов
/ 10 января 2019

Из документации PHPhotoLibrary:

При каждом вызове метода executeChanges (: завершение хандлера :) или executeChangesAndWait ( :) приложение Photos отображает предупреждение, запрашивающее у пользователя разрешение на редактирование содержимого библиотеки фотографий.

...