做工具型小程序,最容易掉进去的一个坑,就是把“能做”直接等同于“该做”。最近我们给「好记好搜 AI 助手」加上了到期信息展示。比如本周、本月、今年有哪些记录即将到期,用户一打开就能看到。功能上线后,最自然的下一个问题就是:既然已经知道到期时间了,为什么不顺手把“消息提醒”也做了?从技术上说,这事当然不是做不到。微信小程序生态里,确实有消息触达的路径。公开资料显示,小程序可以通过订阅消息机制实现服务通知,前提是用户在明确交互中授权;用户授权后,服务端可以在后续发送对应模板消息。也就是说,提醒功能并不是没有平台能力,而是要不要走那条路的问题。但我们最后没有优先走“微信消息提醒”这条路,而是做了一个看起来没那么“重”的方案:数据默认留在本地,用户自己打开就能看到到期信息;如果用户愿意,也可以把内容提交给服务器做时间解析、标签提取,再把结果回写回来。这背后,不是单纯的开发排期取舍,而是价值观取舍。一、如果真要做消息提醒,我们会怎么实现先把技术问题讲清楚。如果只是“展示到期信息”,本地就能完成。用户写下一条记录,比如“驾驶证明年 7 月到期”“冰箱里的牛奶周五到期”“这盒药两个月后过期”,小程序可以把内容、标签、到期时间存在本地缓存里。微信小程序本身就提供本地存储能力,常见接口是 wx.setStorageSync / wx.getStorageSync,存储内容默认保留在用户设备侧,除非用户主动清理或被系统清理。已有资料也提到,小程序本地缓存通常有容量上限,常见是总量 10MB。如果要进一步做“到时间自动提醒”,事情就变了。你至少要有这样几层东西:第一层,后端数据库。你要把用户的提醒时间、提醒状态、模板 ID、触达记录等存起来,不然没法跨时间调度。第二层,定时任务或调度系统。系统要知道今天哪些提醒该触发,哪些已经发过,哪些失败了要不要重试。第三层,消息发送链路。如果走微信订阅消息,用户要先在点击行为里授权;授权不是永久无限制的“你想发就发”,而是有模板、授权、发送
我们为什么没有把“到期提醒”做成微信消息推送
做工具型小程序,最容易掉进去的一个坑,就是把“能做”直接等同于“该做”。最近我们给「好记好搜 AI 助手」加上了到期信息展示。比如本周、本月、今年有哪些记录即将到期,用户一打开就能看到。功能上线后,最自然的下一个问题就是:既然已经知道到期时间了,为什么不顺手把“消息提醒”也做了?从技术上说,这事当然不是做不到。微信小程序生态里,确实有消息触达的路径。公开资料显示,小程序可以通过订阅消息机制实现服务通知,前提是用户在明确交互中授权;用户授权后,服务端可以在后续发送对应模板消息。也就是说,提醒功能并不是没有平台能力,而是要不要走那条路的问题。但我们最后没有优先走“微信消息提醒”这条路,而是做了一个看起来没那么“重”的方案:数据默认留在本地,用户自己打开就能看到到期信息;如果用户愿意,也可以把内容提交给服务器做时间解析、标签提取,再把结果回写回来。这背后,不是单纯的开发排期取舍,而是价值观取舍。一、如果真要做消息提醒,我们会怎么实现先把技术问题讲清楚。如果只是“展示到期信息”,本地就能完成。用户写下一条记录,比如“驾驶证明年 7 月到期”“冰箱里的牛奶周五到期”“这盒药两个月后过期”,小程序可以把内容、标签、到期时间存在本地缓存里。微信小程序本身就提供本地存储能力,常见接口是 wx.setStorageSync / wx.getStorageSync,存储内容默认保留在用户设备侧,除非用户主动清理或被系统清理。已有资料也提到,小程序本地缓存通常有容量上限,常见是总量 10MB。如果要进一步做“到时间自动提醒”,事情就变了。你至少要有这样几层东西:第一层,后端数据库。你要把用户的提醒时间、提醒状态、模板 ID、触达记录等存起来,不然没法跨时间调度。第二层,定时任务或调度系统。系统要知道今天哪些提醒该触发,哪些已经发过,哪些失败了要不要重试。第三层,消息发送链路。如果走微信订阅消息,用户要先在点击行为里授权;授权不是永久无限制的“你想发就发”,而是有模板、授权、发送