
灵感来自一款海外未开源的赛博飞鸽作品。既然原作者选择闭源,我就基于自己的理解独立手写了一个可自部署的开源版,把这种「给时间一点距离,给思念一点回音」的体验延续下来。
「赛博飞鸽 · 已读在飞」是一个微信小程序:你写一封信,选择一只动物信使(信鸽 / 游隼 / 猫头鹰 / 乌龟),它会按真实速度跨越城市,慢慢飞到收信人那里。
不是秒达,而是让信花点时间——信鸽要飞几天,乌龟可能要飞大半个月。收信人打开小程序时,看到的是「信使正在飞行中,还有 X 天抵达」的倒计时。这种"慢"本身就是产品。
层 | 选型 | 说明 |
|---|---|---|
前端 | uni-app(Vue3) + HBuilderX | 一套代码编译到微信小程序 |
后端 | 纯 PHP | 无框架,零依赖 |
存储 | JSON 文件( | 零数据库、零运行期第三方 API 调用 |
微信能力 | 订阅消息 + 激励视频广告 + wxacode | 寄出/送达通知、广告复活信使、生成小程序码 |
定时任务 |
| 服务端定时扫描,判信使「失联 / 送达」 |
小程序 pages/* ──utils/* 封装请求──▶ api_*.php(server/)
│
├─▶ 读写 data/*.json(信件 / 用户)
├─▶ cron.php 定时判定状态
└─▶ 微信接口(订阅消息 / 广告 / 小程序码)四个核心 API:
api_send.php 寄信 → 落库 + 发「寄出确认」订阅消息api_get.php / api_mailbox.php 查信、拉收件箱cron.php 到点把「飞行中」翻成「已送达」并推「送达通知」,小概率判「信使失联」api_revive.php 看广告复活失联信使1. 零数据库、零运行期 API
所有数据走静态 JSON,地图/城市等数据本地化存储。这来自一个很现实的红线:不想为地图 API 付费、不想养数据库。代价是并发能力弱,但对个人慢递小程序完全够用。
2. 激励视频广告复活链路
信使失联后,发信人可看一段激励视频广告把它「召回」。广告位 adunit-fabe79a524528e60 绑定作者本人微信流量主账号——fork 自用时需替换成自己的。
3. AppSecret 加固
早期 AppSecret 硬编码在登录接口里,后来抽到 config.php 并用 .gitignore 排除,仓库只留 config.example.php 脱敏模板。开源项目绝不能把密钥推上去。
4. 订阅消息 7 天窗口
微信一次性订阅只有 7 天有效。乌龟这种慢信可能远超窗口,所以「送达通知」对长信存在理论失效——v1 先接受这个限制。
manifest.json 顶层 appid 要和 mp-weixin.appid 一致,否则发行报错。scope.userLocation),否则被打回。git pull --rebase 再 git push,别硬推。git config --global https.proxy http://127.0.0.1:7897 即可。git clone https://github.com/fanbaishu/cyber-flying-pigeon-readflying.gitserver/config.example.php 为 server/config.php,填 WX_APPID / WX_APPSECRET / 两个订阅消息模板 IDserver/ 传到支持 PHP 的虚拟主机(宝塔等)pages/、utils/ 里的后端域名改成你自己的仓库含完整前端 + 后端 + 部署文档 + 9 张产品截图,config.php / 用户数据均已被忽略,可放心 fork。
如果你也喜欢这种「慢一点的浪漫」,欢迎 star / fork / 提 issue。海外那款原作没开源,这个开源版就当是给它的一封回信。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。