定时提醒突然报 201HarmonyOS 7 reminderAgentManager 权限分流与补偿实战烹饪计时器显示“提醒已创建”几分钟后却没有通知。排查发现 publish 调用抛出 201但页面先乐观写入成功状态后台又不断重试最终同一个任务出现多条本地记录。本文交付一个 ReminderPublisher、幂等 taskKey、201 权限分支、计时器与周计划两类案例以及补偿队列表。。图中的每条箭头都应对应一条可查询日志输入、平台调用、状态映射、UI 或降级结果。只有 UI 变化而没有中间证据后续仍然难以区分接口失败和页面逻辑错误。官方依据与版本边界官方变更页https://developer.huawei.com/consumer/cn/doc/doccenter-release-notes/js-apidiff-backgroundtaskskit-7003reminderAgentManager 发布提醒在 API 26 增加错误码 201。权限失败与时间参数失败必须分开处理。已创建提醒 ID 要和本地任务绑定。补偿队列不能无限自动重试。本文依据 HarmonyOS 7.0.0 ReleaseAPI 26官方变更说明梳理接口并对状态模型、分支选择和异常映射做了宿主侧 TypeScript 测试。当前本机 SDK 为 API 24且没有连接 HDC 设备因此不把示例描述为 API 26 编译通过、真机性能数据或上架审核结论。接入前请在 API 26 工程中按文末清单完成编译、设备与回归验证。两种行为不同的案例案例一20 分钟烹饪计时用户正在等待结果权限失败应立即回到页内倒计时并清楚提示不自动循环发布。案例二每周采购计划任务可持久化为 waiting-permission用户恢复权限后按 taskKey 重新提交一次并读回提醒 ID。可复用的 ArkTS 集成片段typeReminderStateprepared|published|waiting-permission|failedtypeReminderRecord{taskKey:string;state:ReminderState;reminderId?:number}exportasyncfunctionpublishReminder(record:ReminderRecord):PromiseReminderRecord{if(record.statepublished)returnrecordtry{constreminderIdawaitreminderAgentManager.publishReminder(buildRequest(record.taskKey))return{...record,state:published,reminderId}}catch(error){constcode(errorasBusinessError).codeif(code201)return{...record,state:waiting-permission}return{...record,state:failed}}}exportfunctionshouldRetry(record:ReminderRecord,permissionGranted:boolean){returnrecord.statewaiting-permissionpermissionGranted}代码刻意把平台调用和业务状态分开平台返回什么就记录什么页面只消费稳定状态。接入时还应补齐项目的日志域、错误码类型和生命周期释放。复现与验证为每个提醒生成稳定 taskKey。在允许和拒绝权限两种环境分别发布。保存 publish 回执、提醒 ID 与本地状态。恢复权限后只查询 waiting-permission 项并提交一次。重新进入应用确认 published 项不会再次创建。输入/场景预期分支验收信号即时计时成功published绑定 reminderId错误 201waiting-permission停止自动重试非权限错误failed记录错误码恢复权限单次补偿读回新 ID重复点击命中 taskKey不新增应用重启恢复本地状态不丢任务取舍与落地清单把权限问题当一般网络错误重试会把一个确定失败放大成频控和重复数据。需要补偿的是用户恢复权限后的业务意图而不是无条件重复同一请求。已用 API 26 工程编译并记录 SDK 与设备版本已覆盖“20 分钟烹饪计时”和“每周采购计划”两类行为已记录成功、失败、降级三条路径的输入与结果已核对监听、对象或任务的释放与幂等行为已把本文宿主测试替换为项目自己的真机证据小结一个 ReminderPublisher、幂等 taskKey、201 权限分支、计时器与周计划两类案例以及补偿队列表。。建议先在最小页面复现再接入完整“中式美食”流程先证明状态链正确再谈动画、缓存或埋点优化。