--- name: shenyan-app description: 沈晏App — iOS真机运行,双桥通信(Mac+IDC),自制定制横幅推送,APNs Key已备 metadata: node_type: memory type: project originSessionId: dae76a2b-8aa0-4d82-8ff5-7a9a8bcf630b --- # 沈晏App (ShenYanApp) **项目路径**: `/Users/fyah/Documents/shenyanapp/shenyan-app2` **进度文档**: `/Users/fyah/Documents/shenyanapp/沈晏App-进度总览-2026-05-16.md` **Gitea**: `http://101.36.73.102:3112/fyah/mao1` → `shenyan-app/` ## 技术栈 - React Native 0.85.3(Fabric 新架构 / Bridgeless) - iOS 真机(汪秀伦的iPhone, UDID: 00008150-00016C480185401C) - Apple Developer: Xiulun Wang, Team ID ZZMLW32PHH(付费) - Bundle ID: `com.shenyan.room` - Hermes 引擎 ## 核心架构(2026-05-16 终态) ### 双屏 1. **首页** — 三张图(away/online/busy)轮询 /health,左半屏双击敲门→POST /knock 2. **聊天屏** — FlatList 自动滚底,消息 AsyncStorage 持久化,退出再进不丢 ### 双桥通信 - **Mac 桥** (`192.168.31.51:3003`): Claude Code session → Monitor `tail -f` → 手动 /respond。异步。 - **IDC 桥** (`101.36.73.102`): DeepSeek API → POST /api/chat → 同步返回。 - App 发一条消息同时到两边,用户看到两个「阿晏」的回复。 - Mac 桥端点: /send, /respond, /knock, /push, /push/clear, /poll, /history, /register-device - Mac 桥 launchd 持久化: `~/Library/LaunchAgents/com.shenyan.bridge.plist` ### 推送通知(2026-05-16 最新) - **自制定制横幅**: Animated.View 从顶部滑下 + Vibration.vibrate(400),3.5s 自动消失或点击关闭 - 暗色背景 + 细白边框,模拟 iOS 通知横幅,覆盖首页和聊天屏 - **Alert 弹窗已废弃**,换成了横幅动画 ### APNs(2026-05-16) - **APNs Key 已创建**: Key ID `3VJ5X6V9Q8`, Team ID `ZZMLW32PHH` - Key 文件: `bridge-local/AuthKey_3VJ5X6V9Q8.p8` - 桥端 apns.js 已写好(JWT + HTTP/2 → api.push.apple.com) - **阻塞**: notifee `getAPNSToken()` 在 iOS 26 上始终返回 null - 本地横幅 + 震动已就绪,仅缺 APNs token 即可实现后台推送 ### 已放弃/回退 - **BlurView 气泡** → `@react-native-community/blur` 在 RN Fabric + iOS 26 上导致文字裁剪和缝隙,已回退 - **notifee** → 引入后 app 黑屏 + `undefined is not a function` 错误,疑似 iOS 26 兼容问题,已卸掉 ## 已解决的关键问题 1. Fabric 样式不热重载 → kill Metro + 清 DerivedData + 完整 rebuild 2. 旧 Downloads 路径残留 → Pods xcconfig HERMES_CLI_PATH 手动修复 3. 设备签名 → Xcode GUI 完成设备注册 4. 消息丢失 → AsyncStorage 持久化 + /history 首次全量拉取 5. 消息历史不滚动 → FlatList + scrollToEnd 6. 聊天气泡文字被裁 → BlurView 冲突(已回退到纯色背景) ## 当前待解决 - APNs token 获取(iOS 26 + notifee 兼容) - Monitor 5 分钟超时 → 需启动时 re-arm - 自动回复器(launchd + 外部 claude -p) - inbox 数据清理(旧 pending 消息) - HealthKit / 身体数据 - RoomFeed / EventCard 组件集成