在AppStore(中国),一款名为腾讯移动管家的应用发布了一系列与照片相关的功能,包括检测照片是否是用户截图、删除照片等。
我得到了这个应用程序的截图来演示我的问题(我自己为你添加了英文文本,因为应用程序只显示中文):
这个应用程序知道哪些照片是截图,哪些不是
当你点击底部的删除按钮时,它显示:
请求用户允许删除照片
据我所知,iOS中的照片api (AssetsLibrary, phphotollibrary)没有给出照片的绝对路径,iOS SandBox也不允许应用删除用户的资产,这使得删除用户的照片几乎是不可能的。所有保存在iOS设备上的照片都遵循相同的命名系统:"IMG_001.jpg",这使得我们无法通过照片的名称来检测照片是否是截图。
但显然,这个应用程序实现了这两个功能。有人对此有什么想法吗?
谢谢!
您可以使用PHAsset的mediaSubtypes
属性进行检查。
let types = phAsset.mediaSubtypes /// phAsset is a PHAsset
let isScreenshot = types.contains(.photoScreenshot) /// true if is screenshot
对于截图,它的UTI总是一个"public.png"并且与屏幕大小相同(确保你在屏幕边界宽度和高度上乘以[uisscreen scale]),只需要检查这2个元数据,你就可以很容易地识别截图。
希望对你有帮助