ios - 在未经用户授权的情况下删除在 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
我不知道我如何才能满足这个要求。请帮助,非常感谢您的帮助。谢谢。:)
解决方案
从以下文档PHPhotoLibrary
:
每次调用 performChanges( :completionHandler:) 或 performChangesAndWait( :) 方法时,Photos 都会显示一个警告,询问用户是否允许编辑照片库的内容。
推荐阅读
- javascript - 无法从 NY Times API 检索数据
- kubernetes - Kubernetes - 重启后指标不显示
- git - 将 git 远程部分同步到另一个
- node.js - 无法安装 expo-cli --global
- c# - Task.Run 出现异步方法错误
- android - Android:在片段中使用回收站视图时出现问题
- twitter-bootstrap-3 - 重新排序引导程序 3.3.7 列并消除列之间的高度空白
- java - 如何修复 Java 中的“未设置输入源”错误 [mac]
- android - 将辅助颜色 (ColorAccent) 设置为底部导航栏背景颜色
- javascript - 如何启用 DataTable JS 服务器端?