做了一个 iOS 相册清理工具,不只是找重复图也聊聊两次被苹果审核拒绝的经历 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wwwwwwwwwwww
V2EX    分享创造

做了一个 iOS 相册清理工具,不只是找重复图也聊聊两次被苹果审核拒绝的经历

  wwwwwwwwwwww 4 天前 1042 次点击

相册有 3 万多张照片,存储快满了。试了几款清理 App ,要么只能找重复图,要么扫出来一堆误判。干脆自己写一个。

结果写着写着功能越来越多,大概两个月后变成了现在这个样子:PhotoSweep

App Store 链接: https://apps.apple.com/app/id6759631286 免费下载,优惠码 PHOTOSWEEP2026 可以免费用一个月 Pro 。


主要功能

智能扫描( 8 个分类)

一键扫描整个相册,分类找出:

  • 精确重复 / 相似图片
  • 模糊、失焦的照片(用 Vision 框架的 Laplacian 方差做的)
  • 截图和屏幕录制
  • 体积过大的文件
  • 重复视频
  • 按地理位置聚合的图片

SwipeTriage (滑动分拣)

类似 Tinder 的卡片界面向右滑保留,向左滑删除。当你有几百张"也许要删"的照片时,这个效率比一张张看高多了。

EXIF 元数据查看器

选一张照片,马上看到完整 EXIF:相机型号、曝光、光圈、ISO 、GPS 坐标(带地图预览)。支持一键分享文本。

照片健康报告

给你整个相册打一个"健康分",列出具体的问题(比如"截图占了 3.2GB"),有行动建议。

批量水印

上传前加文字水印,支持字体大小、位置、透明度,一次处理多张。

其他工具:截图拼接、网格切割( Instagram 九宫格)、照片/视频压缩、HEICJPEG 转换、iCloud 诊断、存储分析。

全部本地处理,没有服务器,没有账号,没有广告。


技术栈

  • Swift / SwiftUI ,iOS 17+
  • Vision 框架做模糊检测( Laplacian 方差)
  • CoreImage 做相似图哈希比对
  • SwiftData 持久化,带 DB 损坏自动恢复
  • BGProcessingTask 后台扫描 + 断点续传
  • 37 种语言本地化( 478 个 key )
  • 450 个测试( 422 单元 + 28 UI/E2E )

被苹果拒了两次,说一下经过

第一次:Guideline 2.5.1 ( HealthKit 权限残留)

早期有个功能想读 HealthKit 数据,后来放弃了。删掉了代码,也删掉了 .entitlements 文件里的条目,但忘了 Apple Developer Portal 的 App ID Capabilities 页面里还留着这个 capability 。苹果审核员发现了,拒了。

教训:entitlements 是三层的代码层、.entitlements 文件、Portal App ID Capabilities ,三个地方必须同步。

第二次:Guideline 4.3(a)(与系统 App 功能重复)

审核员认为和系统自带的"照片"App 功能没有实质区别。我加了三个明显差异化的功能( EXIF 查看器、健康报告、批量水印),重写了 App Store 描述,重新做了 Onboarding 来在第一次启动时就展示差异化,才通过。


定价

  • 免费:无限扫描,每次最多清理 20 张
  • Pro 订阅:$0.99/周 或 $9.99/年,含 1 周免费试用
  • 优惠码 PHOTOSWEEP2026:免费用 1 个月(兑换方式:App Store → 头像 → 兑换礼品卡或代码)

PhotoSweep 主界面

有问题欢迎在这里问,或者 App Store 评论。做独立开发比较孤独,认真的 Feedback 对我来说很有价值。

10 条回复    2026-03-20 17:32:10 +08:00
loserwn
    1
loserwn  
   4 天前
我的照片和视频比楼主还多。有几个问题:
* app 的逻辑是要把云端的照片的都加载下来,再进行对比吗?如果是,可能会出现我的本地空间不够加载全部照片的情况。
* 如果照片规模达到 10w+ 是否有性能问题。(我之前使用一些云盘备份照片会有 highcpu 的问题。例如:tx 微云,每次备份照片手机都特别烫,耗电猛增。)
wednesdayco
    2
wednesdayco  
   4 天前
感觉专门做个 app 意义不大,不如我 immich 好用,甚至能搜“截图”这样来快速删除手机里的截图相关的照片。
cai314494687
    3
cai314494687  
   4 天前
之前在这里看到有人发过类似的 App
karlfu
    4
karlfu  
   4 天前
美区 ip 显示兑换码无效
aero99
    5
aero99  
   3 天前
上次用了 v2 也是一个网友开发的相册整理工具,是减肥瘦身的那种,结果不知怎么相册出了很多重复的,甚至有一个照片出现了几十张,另外处理完的照片在 iPhone 相册里面排序也乱套了。

我想以后再也不对原始相册做第三方工具整理了,一定要包留原始的数据备份,处理也是最好单独弄出来一份再说。
ronman
    6
ronman  
   3 天前
iCloud 上的照片支持吗?
mankismi
    7
mankismi  
   3 天前
弯弯 ip 现实兑换码无效
mankismi
    8
mankismi  
   3 天前
回报一下,几乎全被打上模糊了。即使阈值开到 200 总共就 8k 张 有 6k 打上模糊
目前使用 16pro 照片也不全是 16pro 拍的
另外排版很多都叠在一起,考虑相册那种吧 不要用瀑布流
最好选可以有预览的方法,目前直接选择+重叠 没有删除的勇气
cwliang
    9
cwliang  
   3 天前
头像不错
cvooc
    10
cvooc  
   3 天前
国区兑换无效
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     958 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 23ms UTC 21:04 PVG 05:04 LAX 14:04 JFK 17:04
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86