我做了个不要账号、不要定位权限的旅行 App,聊聊那些「不做」的决定

闲时整理相册,翻到 过去拍的旅行照片。四千多张,一张都没发出去过。

不是不想发。是不知道该怎么发------九宫格太随意,长图太隆重,发单张又觉得少了点什么。那些照片就一直躺在相册里,一年一年地往下沉。

于是我开始写 TripStamp。想法很简单:选一张旅行照片,配上地点、日期和从照片里提取的颜色,做成一张卡片。

做到一半我发现,真正花时间的不是做功能,是决定不做什么。

不做账号体系

最早的版本我是打算做云同步的。用户换手机,作品能跟过来,听上去很合理。后来我把这个想法删了。

做账号意味着要有服务器,有服务器就要存用户数据,存了数据就要写一份关于「我们如何使用你的信息」的隐私政策------而我真正想写的那句话是:我什么都拿不到

现在 TripStamp 没有注册、没有登录、没有后端。你的照片从相册里选出来,在手机上处理完,导出到相册。中间不经过我的任何一台机器。隐私政策里那句「不会在开发者运营的服务器上保留你的照片或卡片副本」,是因为压根不存在这样的服务器。

代价是换手机数据不跟着走。这个取舍我认了。

不要定位权限

1.2.0 加了「旅行足迹」:你导出过的地方会自动连成一张地图,还能切到 3D 地球转着看。

做地图功能,最自然的做法是申请定位权限。但我没有。

足迹里的每一个点,都来自你自己选中的那张照片里本来就有的信息。照片拍摄时相机记下的经纬度,App 读出来,仅此而已。你没选的照片,App 看不到;你不导出,就不会有点落在地图上。

所以 TripStamp 的权限列表里没有「位置」这一项。第一次打开地图的人常以为忘了弹窗------不是忘了,是真的不需要。

这件事的另一面是:如果你的照片不带地理信息,那它就上不了地图。我没有用 IP 去猜,也没有用别的办法补。上不了就是上不了。

不做服务端渲染

后来我研究了一下同类做法,发现有些 App 的「3D 飞行视频」是这么做的:你上传素材,服务器排队渲染,排到了推送通知你。我看到的截图上写着「当前排名 516 位」。

这条路我走不了------不是技术问题,是它和上面那两条直接冲突。素材要上传,就意味着我得先把你的照片收上来。

所以 3D 地球是在你手机上实时渲染的。转动、缩放、路线动画,都是当下算出来的。不用等,不用联网,飞机上也能转。

不做订阅

Pro 是一次性买断。

我自己手机里有太多按月扣费的 App,每次看到账单都要想一想「这个我还在用吗」。TripStamp 是个低频工具------你不会每天做卡片,可能一次旅行做几张,然后几个月不打开。这种东西按月收费不合适。

免费能用四个模板,每天导出 5 张。买断之后无限导出、去水印、多一个护照印章模板、加上地球上的路线动画。

一个没想到的问题:平面地图装不下地球

这是整个开发过程里最让我意外的一件事。

足迹地图我一开始用的是普通平面地图。测试的时候数据都在长三角,一切正常。直到我造了一组跨洲的测试数据------里斯本、雷克雅未克、京都------地图直接框到了北冰洋,一个标记都看不见。

我以为是取景算法写错了,改了五版。后来才想明白:这是墨卡托投影本身的限制。竖屏视口在这套投影下能显示的经度范围,比宽扁的横屏还要少。地点跨度一大,平面地图在数学上就装不下,跟算法没关系。

那怎么办?球面上没这个问题。

所以 3D 地球不是为了炫技加的,是因为平面地图真的装不下。这个结论我写进了设计文档,免得以后自己又去改那个取景算法。

一个翻车:存储膨胀了 9 倍

上线后我自己用了一段时间,某天在设置里看到 App 数据占了 51.2MB。53 条记忆,平均一条 1MB------缩略图不该这么大。

查下来是UIGraphicsImageRenderer的默认行为:它按屏幕倍率渲染,iPhone 上是 3 倍。我写的是「最长边 512px」,实际存下来是 1536px。像素数是预期的 9 倍,存储也就跟着膨胀了 9 倍。

一行format.scale = 1修好。同时写了个一次性迁移,把老用户已经存下的大图压回去------我这台从 51.2MB 降到了 12.6MB。

有意思的是,修完之后我发现作品预览变糊了。因为那个「意外的 3 倍」恰好让预览图刚够全屏看,修掉之后反而不够了。所以最后的做法是:缩略图和作品预览分开设上限,列表里的 512 够用,要全屏看的预览给到 1280。

一个 bug 修出两个决定,这大概就是写代码的日常。


TripStamp 现在在 App Store 上,搜名字就能找到。1.2.0 是旅行足迹这一版。

如果你手机里也躺着几千张没发出去的旅行照片,可以试试。

♥️喜欢我的内容,欢迎大家点赞、转发、关注。

♥️专注于技术+投资+认知三位一体的内容分享。

往期推荐:

860 次展示,13 次下载:我的第一个出海 App 上线一个月

收藏夹从此不再吃灰:我用 Claude Code + Obsidian 搭了个会自己整理的第二大脑

识别"假护城河":3 个信号,看穿一家公司靠技术还是靠品牌

用AI自搭程序,抓到一个AI投资工具,我马上部署了,AI看盘投资落到了实处

今日阅读分享------如何做出伟大的工作?

纳瓦尔思想全景图------财富与幸福指南

如何走出创作低谷?一份可视化指南给你打气

经济机器是怎样运行的?

解决AI焦虑的唯一办法,建议收藏

AI工业革命,有哪些能力最稀缺?

为什么很多创业者做出来的产品没人买?------读《The Mom Test》有感

巴菲特和芒格没有说的那些话

芒格的人生操作系统,构建复利人生的基石

如何选择真正适合你的职业?

决策矩阵

二阶思维

决策日志

AI时代,软件工程师必备概念全景

相关推荐
李剑一1 小时前
Anthropic将在AI生成文本中嵌入水印!难道是用我之前写的这个技术?
前端·aigc·ai编程
Canace1 小时前
给 Claude 一个链接,它真的读了原文吗
前端·人工智能·ai编程
神奇霸王龙2 小时前
V4-Flash 公测:Agent 智能路由白菜化
ai·aigc·agent·ai编程·ai写作·deepseek
DO_Community2 小时前
AI 应用成本怎么算?从推理费用到完整 TCO 拆解
人工智能·gpt·agent·ai编程·llama·kimi
deli0070072 小时前
打飞碟射击场:霓虹星空下飞碟满天飞,鼠标点射一枪一个
前端·ai编程
黑科技iOS上架3 小时前
AI私有部署和开源洪流
经验分享·ai编程
怕浪猫3 小时前
第8章 从0到1全流程产品设计
产品经理·产品·资讯
星期一研究室3 小时前
告别文档「图片灾难排版」!3大黄金法则,让你的文档从杂乱无章到杂志风🧩
微服务·产品·设计