- 双桥:Mac桥(Claude Code异步) + IDC桥(DeepSeek同步) - 推送:自制定制Animated横幅 + 震动,替代Alert弹窗 - APNs:Key已创建(3VJ5X6V9Q8),桥端apns.js已写好 - 图标:已替换为定制图标 - BlurView/notifee:iOS 26兼容问题已回退 - 记忆库更新 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
沈晏 App 进度总览 — 2026-05-16
当前状态
iOS 真机可运行。双桥(Mac + IDC)通信。自制定制横幅推送。APNs Key 已备。Gitea 代码仓库已建。
已完成
苹果开发者
- 付费开发者账号(Team: Xiulun Wang, ID: ZZMLW32PHH)
- Bundle ID:
com.shenyan.room - 真机签名、构建、安装全链路通
首页
- 三张 bridge 状态图(away / online / busy),全屏
- 每 8 秒轮询
101.36.73.102/health - 底部半透明状态文字
- 左半屏双击「敲门」进聊天室(350ms 双击窗口,POST /knock)
聊天屏
- FlatList 自动滚底,消息持久化(AsyncStorage + /history)
- 用户消息右对齐(rgba 0.1),AI 消息左对齐(rgba 0.06),圆角
- 桥断开提示「消息没发出去,检查WiFi连接」
- 退出再进消息不丢
双桥通信
- Mac 桥
192.168.31.51:3003:Claude Code 异步回复(Monitor + /respond) - IDC 桥
101.36.73.102:DeepSeek 同步回复(POST /api/chat) - 发一条消息同时到两边,用户看到两个「阿晏」
推送通知(定制横幅 + 震动)
- 自制定制 Animated 横幅,从顶部滑下
- 暗色半透明背景 + 细白边框,点击关闭
- 3.5 秒自动消失
- Vibration.vibrate(400) 震动
- 覆盖首页和聊天屏
APNs
- Key 已创建:Key ID
3VJ5X6V9Q8,Team IDZZMLW32PHH - Key 文件:
bridge-local/AuthKey_3VJ5X6V9Q8.p8 - 环境:Sandbox & Production
- 桥端 apns.js 已写好(JWT + HTTP/2)
- 阻塞:notifee
getAPNSToken()在 iOS 26 返回 null
App 图标
- 已替换为眠眠设计的图标(2048x2048 → 各尺寸)
本地桥(bridge-local/server.js)
- 端口 3003,launchd 持久化
- 数据目录:
~/.shenyan-bridge/ - 端点:/send, /respond, /knock, /push, /push/clear, /poll, /history, /register-device
- APNs 模块:apns.js(JWT 生成 + HTTP/2 推送)
代码仓库
- Gitea:
http://101.36.73.102:3112/fyah/mao1→shenyan-app/
记忆库
- launchd 每天 4:03 执行记忆整理
已尝试但回退
- BlurView 气泡:
@react-native-community/blur在 RN Fabric + iOS 26 上导致文字裁剪和缝隙 → 回退到纯色背景 - notifee 系统通知:引入后 app 黑屏 +
undefined is not a function→ 疑似 iOS 26 兼容问题 → 卸掉,改用自制定制横幅
待解决
- APNs token 获取(iOS 26 + notifee 兼容)
- Monitor 5 分钟超时(需频繁 re-arm)
- 自动回复器(launchd + 外部 claude -p)
- inbox 旧消息清理
- HealthKit 能力
- Mi Band 10 身体数据
- RoomFeed / EventCard 组件集成
- iOS Share Extension(分享到沈晏)