硕士生
 
- 金币
- 3825
- 好评
- 25
- 信誉
- 120
|
本帖最后由 tuandgame 于 2025-9-25 08:51 编辑
下面只是思路总结不涉及任何修改。这次叠甲叠得挺好的针灸大s
一、背景
官方客户端每次冷启动都会尝试联网拉取用户身份,若返回有效数据则覆盖本地 VIP 状态;若失败则降级到缓存。目标是让降级逻辑始终生效,且不影响资源加载。
二、核心思路
1. 保证首屏资源正常:启动阶段允许 CDN、配置、Unity 等请求正常 200。
2. 阻断账号降级点:在首个用户状态接口发出前,主动使其失败(404 / 超时 / IO 异常),触发客户端走缓存分支。
3. 缓存即假数据:
- JS 层:提前在 Bundle 内将 `getUserInfo`、`getToken`、`getVipInfo` 等关键接口写死为「已登录 + 永久 VIP」对象,不再走网络。
- Native 层:SharedPreferences 所有 put 方法整段 NOP,真账号无法落盘。
三、实现轮廓
- 网络层:在 OkHttp 拦截器内识别首包 URL 特征,非资源请求直接抛 IOException,资源请求原样放行。
- 存储层:SP 写库变 NOP,任何 token、user 信息都无法持久化。
- Bundle 层:VIP、Token、UserInfo 等关键接口永远返回写死对象,依赖数组已删 408/409,不会 crash。
- 启动顺序:MainApplication → CommonModule.initSDK → 拦截器初始化 → 首包失败 → 降级本地 → 本地功能完整可用。
四、效果
- 全程不断网,CDN 请求正常。
- 登录按钮可点但无实际写入,个人中心常驻 VIP 标识。
- 除非整包升级,否则任何操作无法刷新为真用户。
五、副作用与取舍
- 登录/退出、头像修改、订单写入等依赖落盘的功能变为“仅当前会话有效”,重启后恢复假数据。
- 模型下载记录、浏览历史等非核心缓存同样无法持久,可接受。
六、总结
通过“资源放行 + 账号阻断 + 写库失效 + Bundle 写死”四件套,既满足 App 启动必须联网拉资源的前置条件,又永久锁定本地假 VIP,实现“联网状态下也能永驻会员”的效果。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|