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