需求描述
## 一、业务流程规则(最重要,严格执行)
❌ 禁止:onLoad /onShow 页面打开就预加载、弹出广告(旧代码问题,必须删除)
✅ 广告触发节点:**用户【借充电宝成功】 OR 【归还充电宝成功】的业务回调之后**
完整时序:
1. 用户扫码打开絮电 → 只展示机柜借还 UI,**不执行任何广告相关代码**
2. 用户点击借 / 还,执行设备通信、订单创建、支付分免押逻辑
3. 业务回调返回【借宝成功 / 归还成功】
4. 弹出微信 Toast 提示(借宝成功 / 归还成功,800ms 延迟)
5. Toast 结束后,**才创建并加载插屏广告**
6. 广告加载成功后,延迟 300ms 调用 show (),预留渲染上报时间
7. 用户可随时关闭广告,**禁止拦截用户关闭小程序、强制停留**
## 二、广告业务约束规则
1. **用户频次限制**:同一个微信用户,**同一天最多弹出 1 次插屏广告**。用小程序本地 storage 记录日期,当日已经弹过广告,则本次不再加载广告。
2. **广告超时保护**:广告发起 load 后,**3 秒加载超时直接销毁广告实例,放弃本次广告展示,不能阻塞页面业务**。
3. **实例防重复**:避免重复创建多个广告实例;页面 onUnload 时,销毁广告实例、清除定时器,防止内存泄漏、无效广告请求。
4. 遵守微信官方规范:小程序冷启动 30s 内禁止展示插屏;两次插屏广告间隔≥60s,代码捕获广告错误码,异常时静默不报错。
5. 广告失败静默处理:广告加载失败、填充为空、频控限制,**不弹窗提示用户,不影响充电宝业务**。
## 三、需要实现的功能清单
1. 广告实例创建、load 加载、show 展示、onClose 关闭、onError 错误监听全套事件。
2. 本地存储判断:当日用户是否已经展示广告,控制弹窗频次。
3. 3 秒加载超时自动销毁逻辑。
4. 页面卸载(onUnload)销毁广告实例、清除定时器。
5. 捕获广告 API 错误,日志打印,不阻断业务。
6. 代码注释清晰,广告相关代码独立隔离,不侵入充电宝订单、设备回调业务。
## 四、禁止开发清单(红线,绝对不能写)
1. ❌ 禁止页面 onLoad/onShow 预加载广告、扫码进页直接弹广告
2. ❌ 禁止拦截、阻止用户关闭小程序,强制停留看广告
3. ❌ 禁止诱导点击广告(如点击广告免租金、减免费用)
4. ❌ 禁止每次扫码都弹窗,不做频次限制
5. ❌ 禁止修改充电宝订单、支付分、商户回调、设备上报相关代码
6. ❌ 禁止同时开启流量主智能接入,开发前先在后台关闭智能接入
## 五、交付物要求
1. 修改后的完整前端源码,广告代码独立,注释清晰。
2. 体验版小程序,可测试借宝成功、归还成功两个场景广告触发。
3. 上线后,提供简单测试说明,验证广告触发逻辑。
## 六、验收标准(上线后观测 7 天)
1. 功能验收:
- 进小程序页面,不会弹出广告;
- 借宝成功、归还成功后,才触发广告;
- 同一用户当日第二次扫码借还,不会再弹出广告;
- 广告加载超时,不会卡住页面;关闭广告可自由退出小程序。
2. 流量主后台数据验收:
- 广告拉取量正常,**曝光率从当前 33% 提升至≥60%**
- CTR 点击率稳定在 0.8%~1.5% 区间,不冲高
3. 业务验收:**充电宝借还、支付分订单功能完全不受影响,不新增用户投诉**