在AppStore(中国),一款名为腾讯移动管理器的应用程序发布了一系列与照片相关的功能,包括检测照片是否是用户截图,删除照片。
我得到了这个应用程序的截图,以便在这里展示我的问题(我自己添加了英文文本,因为应用程序只显示中文):
This app knows what photos are screenshots and what not
点击底部的删除按钮时,会显示:
Asking permission from user to delete photos
据我所知,iOS中的Photo API(AssetsLibrary,PHPhotoLibrary)没有提供照片的绝对路径,iOS SandBox也不允许应用程序删除用户的资产,这使得几乎删除用户的照片不可能。保存在iOS设备中的所有照片都遵循相同的命名系统:“IMG_001.jpg”,这使得无法检测照片是否是来自其名称的屏幕截图。
但显然,这个应用程序实现了这两个功能。有没有人对此有任何想法?
谢谢!
答案 0 :(得分:0)
对于截图,其UTI始终是" public.png"与屏幕大小相同(请确保您在屏幕边界宽度和高度上有多个[UIScreen scale]),只需要检查这2个元数据,就可以轻松识别屏幕截图。
希望这会对你有所帮助
答案 1 :(得分:0)
您可以使用 PHAsset 的 mediaSubtypes
属性进行检查。
let types = phAsset.mediaSubtypes /// phAsset is a PHAsset
let isScreenshot = types.contains(.photoScreenshot) /// true if is screenshot