antist.ai
全部场景

图集 · L0–L3

做一个 App

手机 App 活在别人的规则里。商店决定你能不能上架,系统决定你的代码什么时候能跑,每一次更新都要在审核队列里排队。这套图纸画出 App 可能的各种形态,从一个能像 App 一样安装的网站,到带后端的原生应用,以及每一种形态什么时候值得它的代价。

设计哲学

App 是住在别人手机里的客人。它被评判的标准,是用主人的电量、注意力和信任时有多客气。

  1. 只要最少的权限

    你申请的每一项权限,都是用户卸载你的一个理由。在真正需要的那一刻再申请,说明原因,被拒绝了也要能继续用。

  2. 商店里没有热修复

    服务器上的 bug 几分钟就能修好;App 里的 bug 要等审核、等用户更新。经常变的逻辑放在服务器上,不要写死在安装包里。

  3. 系统才是老板

    操作系统随时可以暂停、杀掉或隔离你。按“随时会被打断”来设计,而不是和规则较劲。

一个人做第一个 App?先做可安装的网页应用,或者跨平台构建。只有当你需要系统对普通应用藏起来的能力时(通话、后台运行、传感器),才走原生。

图号L0

原型

谁在用你自己,用自己的手机
每月$0

①为什么升级

你想把这个点子握在手里,看看自己是不是真的会打开它第二次。没有商店,没有用户,没什么要保护的。

②架构

要么是一个能添加到主屏幕的网页应用,要么是一个通过开发工具跑在你自己手机上的跨平台版本。没有后端:数据留在手机里。

Δ 本级新增

  • + 跑在你自己手机上的 App
  • + 一屏就能走完的核心流程

对应地图上的形态: 可安装的网页应用(PWA) · 跨平台构建(一套代码)

③工具

选能最快把一个版本装到你真手机上的方案。模拟器在触摸、键盘和性能上都会骗你,你口袋里的手机不会。

④代码与测试

  • 在真手机上测,最好是一台旧手机,不要只看模拟器。
  • 给别人看之前,自己先用一个星期。
图号L1

有真实用户

谁在用装了它的陌生人
每月$0–10

①为什么升级

素不相识的人正在把 App 装进你从没见过的手机里。它崩溃的时候,他们不会告诉你,只会卸载。

②架构

App 先走商店的测试渠道,再公开发布。崩溃上报从第一天就内置。如果某个系统功能是核心,这一刻就该为那个平台改成原生。

Δ 本级新增

  • + 商店页面与测试渠道
  • + 崩溃上报
  • + 由 CI 构建的签名发布版
  • + 给商店的隐私披露

对应地图上的形态: 跨平台构建(一套代码) · 原生应用(Kotlin / Swift)

③工具

这一级崩溃上报不是可选项,它是你看到那些不属于你的设备的唯一窗口。签名密钥一定要备份;丢了它,可能意味着这个 App 再也没法更新。

④代码与测试

  • 每次都先发到封闭测试渠道,再发正式版。
  • App 签名密钥备份两处;它没法重新生成。
  • 测试“权限被拒绝”的路径,而不只是一切顺利的路径。
图号L2

涉及钱和数据

谁在用在你 App 里有账号、付过钱、存了数据的人
每月$10–50

①为什么升级

出现了账号、购买或同步数据。商店的支付规则开始约束你,而一次数据泄露会同时发生在成千上万台手机上。

②架构

App 变成你自己 API 的客户端。账号、购买,以及所有经常变的东西都搬到服务器上,这样修复就不用等商店审核。服务器必须接受所有仍然装着的旧版本 App 发来的请求。

Δ 本级新增

  • + 后端 API
  • + 账号与服务器端的购买校验
  • + 照顾旧版 App 的 API 版本管理
  • + 按要求删除用户数据

对应地图上的形态: App + 后端 API

③工具

严格遵守商店的购买规则;很多数字商品必须走商店自己的支付系统。每一笔购买都在你的服务器上验证,不能只在 App 里验证。

④代码与测试

  • 购买与权益一律在服务器上验证;App 是可以被用户改动的。
  • API 保持向后兼容:用户会连着几个月用旧版本。
  • 提供一条真能用的注销账号路径;商店要求这么做。
图号L3

规模化

谁在用很多用户、很多设备、很多版本
每月$100–1000+

①为什么升级

线上同时跑着好几个版本;一个糟糕的版本在你发现之前就已经到了很多人手里;设备种类多到没法靠手测。

②架构

发布按百分比逐步放量,并能自动叫停;新功能先藏在可以从服务器切换的开关后面上线;每次构建都在一批真机上跑测试。

Δ 本级新增

  • + 带叫停规则的分批发布
  • + 服务器控制的功能开关
  • + 多机型自动化测试

对应地图上的形态: App + 后端 API · 原生应用(Kotlin / Swift)

③工具

这一级的目标,是让每次发布都能不发新包就撤回。任何没法远程关掉的东西,都是一次闭眼上线的风险。

其他值得了解的工具 · 本站未验证

④代码与测试

  • 先发给一小部分用户,崩溃率一飙升就自动叫停。
  • 有风险的功能放在默认关闭的开关后面上线。
  • 测试在一组真实机型与系统版本的矩阵上跑。

架构全景图

这件事所有可能的搭法。它们大半的意义,是让你知道哪些现在还不该碰。

可安装的网页应用(PWA)

验证点子;内容和表单为主,不需要深度访问设备

$0 + 域名 · 低

△ 需要全平台推送、后台运行,或者一个别人能搜到的商店页面

跨平台构建(一套代码)

一个团队同时出 iOS 与 Android;大多数日常应用

$0–25/月 + 商店费用 · 低–中

△ 为了用某个系统功能而和框架较劲,或者性能限制了核心体验

原生应用(Kotlin / Swift)

需要深度系统权限:通话、后台服务、传感器(URDialer 就是这种形态)

$0–25/月 + 商店费用 · 中;两个平台都要就是两套代码

△ 出现账号、同步或支付,App 需要一个自己的服务器

App + 后端 API

账号、跨设备同步、支付、共享数据

$5–100/月 · 中–高

△ 线上同时存在很多个版本,需要功能开关和分批发布

你真正需要的概念

每个概念一句人话 + 一个比喻。点击任何工具模块,也有同款科普。

商店审核
每次发布都要先经过商店检查,用户才能下载;被拒通常会指出违反了哪一条规则。
≈ 每开放一层新楼之前,都得等验收员签字。
运行时权限
相机、定位、通话这类敏感能力,必须在 App 运行时向用户申请,而且随时可能被收回。
≈ 一把要在门口当面讨要的钥匙,主人随时可以收回。
后台限制
为了省电,系统会暂停或杀掉你没在看的 App;需要稍后运行的工作,得交给系统的调度器。
≈ 你一出门酒店就断房间的电;要叫醒服务,得去前台登记。
发布渠道
商店允许你先把一个版本发给测试者,或者一小部分用户,再发给所有人。
≈ 新菜先端给一桌客人尝,再写进菜单。