首页 > 解决方案 > 在未经用户授权的情况下删除在 iOS => 9 中拍摄的最后一个屏幕截图?

问题描述

我要求在 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

我不知道我如何才能满足这个要求。请帮助,非常感谢您的帮助。谢谢。:)

标签: iosscreenshotphphotolibrary

解决方案


从以下文档PHPhotoLibrary

每次调用 performChanges( :completionHandler:) 或 performChangesAndWait( :) 方法时,Photos 都会显示一个警告,询问用户是否允许编辑照片库的内容。


推荐阅读