首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >手搓一个「赛博飞鸽 · 已读在飞」:用 uni-app + 原生 PHP 递信件微信小程序

手搓一个「赛博飞鸽 · 已读在飞」:用 uni-app + 原生 PHP 递信件微信小程序

原创
作者头像
装疯卖傻烤地瓜
修改2026-09-01 09:01:32
修改2026-09-01 09:01:32
260
举报

手搓一个「赛博飞鸽 · 已读在飞」:用 uni-app + 原生 PHP 做慢递信件微信小程序

灵感来自一款海外未开源的赛博飞鸽作品。既然原作者选择闭源,我就基于自己的理解独立手写了一个可自部署的开源版,把这种「给时间一点距离,给思念一点回音」的体验延续下来。


一、它是什么

「赛博飞鸽 · 已读在飞」是一个微信小程序:你写一封信,选择一只动物信使(信鸽 / 游隼 / 猫头鹰 / 乌龟),它会按真实速度跨越城市,慢慢飞到收信人那里

不是秒达,而是让信花点时间——信鸽要飞几天,乌龟可能要飞大半个月。收信人打开小程序时,看到的是「信使正在飞行中,还有 X 天抵达」的倒计时。这种"慢"本身就是产品。

二、技术栈

选型

说明

前端

uni-app(Vue3) + HBuilderX

一套代码编译到微信小程序

后端

纯 PHP

无框架,零依赖

存储

JSON 文件data/messages.json / users.json

零数据库、零运行期第三方 API 调用

微信能力

订阅消息 + 激励视频广告 + wxacode

寄出/送达通知、广告复活信使、生成小程序码

定时任务

cron.php

服务端定时扫描,判信使「失联 / 送达」

三、架构与数据流

代码语言:bash
复制
小程序 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 先接受这个限制。

五、踩过的坑

  • HBuilderX "appid 不存在"manifest.json 顶层 appid 要和 mp-weixin.appid 一致,否则发行报错。
  • 微信审核:隐私声明必须填「已采集用户隐私」(哪怕只用了 scope.userLocation),否则被打回。
  • git 推送分叉:远程有本地没有的提交时,先 git pull --rebasegit push,别硬推。
  • 代理环境:本地走 Clash 时 git 推送会被 RST,配 git config --global https.proxy http://127.0.0.1:7897 即可。

六、怎么自部署

代码语言:bash
复制
git clone https://github.com/fanbaishu/cyber-flying-pigeon-readflying.git
  1. 复制 server/config.example.phpserver/config.php,填 WX_APPID / WX_APPSECRET / 两个订阅消息模板 ID
  2. server/ 传到支持 PHP 的虚拟主机(宝塔等)
  3. 前端 pages/utils/ 里的后端域名改成你自己的
  4. HBuilderX 发行微信小程序,配置自己的 AppID

七、开源地址

仓库含完整前端 + 后端 + 部署文档 + 9 张产品截图,config.php / 用户数据均已被忽略,可放心 fork。


如果你也喜欢这种「慢一点的浪漫」,欢迎 star / fork / 提 issue。海外那款原作没开源,这个开源版就当是给它的一封回信。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 手搓一个「赛博飞鸽 · 已读在飞」:用 uni-app + 原生 PHP 做慢递信件微信小程序
    • 一、它是什么
    • 二、技术栈
    • 三、架构与数据流
    • 四、几个值得记的关键决策
    • 五、踩过的坑
    • 六、怎么自部署
    • 七、开源地址
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档