拆分 #245 的第 3 层,依赖 #255(提醒引擎核心)先合入。
范围
- 设备侧适配器:
ExpoAudioPlayback、ExpoSystemNotification、NativeAlarmScheduler(+ TimeflowAlarmBridge)、NativeDeviceCapability、ReactNativeAlertDialog、ReactNativeVibration
- 定位:
ExpoLocationMonitor(系统原生地理围栏,当前实际接入的实现)+ NativeLocationMonitor(百度 SDK 连续定位,仓库里有但暂未接线)+ geofenceTask
IntervalTimeListener;frontend/index.ts 注册 geofence headless task
- 数据层:
SqliteLocalScheduleReader、SqliteReminderStateStore、LocalReminderAdapters、InMemoryLocalScheduleReader
- 删除对应 Mock 适配器
包含两个 headless/原生相关的 bugfix:进程被杀时地理围栏事件不再丢失(批量 rebuild),以及重启/更新后重新排闹钟。
⚠️ 已知缺口:合并时 nativeAlarmScheduler.test.ts/nativeDeviceCapability.test.ts 两个旧 mock 版测试被删掉、没有补新的,这个 PR 不打算顺手补(工作量+范围原因),先如实记录,后续另开 issue 跟进。
前置/后续
拆分 #245 的第 3 层,依赖 #255(提醒引擎核心)先合入。
范围
ExpoAudioPlayback、ExpoSystemNotification、NativeAlarmScheduler(+TimeflowAlarmBridge)、NativeDeviceCapability、ReactNativeAlertDialog、ReactNativeVibrationExpoLocationMonitor(系统原生地理围栏,当前实际接入的实现)+NativeLocationMonitor(百度 SDK 连续定位,仓库里有但暂未接线)+geofenceTaskIntervalTimeListener;frontend/index.ts注册 geofence headless taskSqliteLocalScheduleReader、SqliteReminderStateStore、LocalReminderAdapters、InMemoryLocalScheduleReader包含两个 headless/原生相关的 bugfix:进程被杀时地理围栏事件不再丢失(批量 rebuild),以及重启/更新后重新排闹钟。
nativeAlarmScheduler.test.ts/nativeDeviceCapability.test.ts两个旧 mock 版测试被删掉、没有补新的,这个 PR 不打算顺手补(工作量+范围原因),先如实记录,后续另开 issue 跟进。前置/后续