← 全部项目
📸

DualCam · 前后双摄

一个念头、一个对话,做出一个真的上了 App Store 的双摄相机

✅ 上线了 · 想同时记录"我"和"我看到的"的人 访问 →
Swift / UIKitAVFoundationCore Image / MetalVision / StoreKit 2
产品介绍 →

🎉 DualCam 已经正式上线 App Store,现在全世界都能下载了:点此下载 一个最初只存在于脑子里的念头,从写第一行代码到躺进 App Store,核心就是一段对话。这篇记录它怎么一步步走到这里。

起心动念

有些瞬间,值得被两面同时记下来——旅行时眼前的风景,和我看到风景时的表情;开箱时手里的东西,和我惊喜的那一下;讲解时身后的场景,和正在说话的我。

手机明明有前后两个摄像头,却总让我二选一。所以我想做一件最简单的事:前后一起拍,合成一条视频,所见即所得。

从”能跑通”到”能上架”

它不是一次写完的,是一步步长出来的:

  1. 先证明技术可行 —— 后置 + 前置同时开,把两路画面实时合成成一条带声音的 mp4,存进相册。这是整件事的地基。
  2. 再做得好用 —— 画中画 / 上下分屏 / 左右分屏三种布局,小窗可拖动、双指缩放、磁吸对齐。
  3. 然后做得好玩 —— 美颜、把脸换成动物面具(不愿出镜也能拍)、背景虚化 / 换虚拟背景、把自己抠出来”站进”后置场景里。
  4. 最后加了点灵魂 —— 「震惊模式」:前置盯着你的脸,你一张嘴做出震惊表情,后置画面”啪”地猛拉近 + 抖一下 + 漫画集中线特效。纯粹因为好玩。

底层上,预览和录制走的是同一条渲染管线,所以你在屏幕上看到什么,录出来就是什么。所有 AI 能力(人脸检测、人物分割)都跑在设备本地,不联网、不收集任何数据。

真机才会暴露的坑

PPT 上的功能都”能用”,真正的工程是把真机上才冒出来的问题一个个填平:画面上下颠倒、录完存不进相册(写入器在收尾前被提前释放)、小窗一大块白边(位图按 3 倍渲染)、翻转一点就崩(Swift 的独占访问冲突)、加了水印后整个 App 卡死(两个线程并发写同一个缓存把字典写坏了)……

这些不是套模板能绕过去的。能把它们一个个定位、修掉,才是”做出来”和”演示一下”的区别。

走向全球:12 种语言 + 会员

要上架,光功能不够:

上架 App Store:真正的”最后一公里”

写完 App 只是一半。要让别人能在 App Store 下载到,还要:

每一步都踩过、查过、填过。

上架审核记:一次问询,三天通过

提交之后没有秒过,苹果在审核里发来一条问询——核心是隐私:这是一个会检测人脸(动物面具、震惊变焦都用到)、还会抠人像的相机 App,审核员要确认:你到底拿用户的人脸 / 生物特征数据做了什么?是否上传、是否留存?

这其实是相机/人脸类 App 最常见的一道关。我的回复很直接,因为产品从第一天就是这么设计的:

同时把这一条明确写进了隐私政策。在 App Store Connect 的”解决方案中心”回复说明 + 更新隐私政策链接——没有重新打包、没有传新版本,纯粹是回复澄清。

约三天后,状态变成”已上架”。 一道问询,一次回复,过了。

经验:相机/人脸类 App,隐私问询几乎必问。与其等被问,不如一开始就把”全部本地处理、不留存、不上传”做成产品事实,并写进隐私政策——回复时就是一句话的事。

这是用 AI Coding 做出来的

从第一行代码到提交 App Store,这个 App 是我 + 一个 AI 编程助手用对话做出来的。

它到达的程度不是 Demo,是真东西:原生 iOS App、分层架构、实时计算机视觉跑在手机上、完整会员系统、12 国语言、修复了一串真·疑难 bug,并且真的上了 App Store

从一个念头,到一个上了架、能被全世界下载的成品——核心就是一段对话。 AI 没有取代”想做什么”和”好不好”的判断;但”怎么把它做出来、怎么送上架、怎么过审”,它真的能扛下来。

状态

已上线 App Store画中画相机 · 前后双摄同录,现在就能下载。海外区已上架,中国区备案进行中。

构建笔记