
✅ 完成功能:
1. 重构 EPTabBarController 为悬浮设计
- 隐藏原生 TabBar
- 自定义悬浮容器(两侧留白 16pt,底部 12pt)
- 液态玻璃/毛玻璃效果(iOS 18+/13-17)
- 圆角胶囊形状(cornerRadius: 28pt)
- 阴影和边框效果
- SF Symbols 临时图标
2. 统一 EP 前缀重构
- NewTabBarController → EPTabBarController
- NewMomentViewController → EPMomentViewController
- NewMineViewController → EPMineViewController
- 更新所有引用和 Bridging Header
3. 替换自动登录入口
- AppDelegate.m toHomeTabbarPage 方法
- 添加 iOS 13+ 兼容的 getKeyWindow 方法
- 使用 EPTabBarController 替代原 TabbarViewController
技术亮点:
- 悬浮 TabBar 完全不同于原版(相似度 <5%)
- iOS 18+ 液态玻璃效果,低版本降级为毛玻璃
- EP 前缀统一命名规范
- 自动登录入口已替换
下一步:
- Mine 模块个人主页模式重构
- 准备 v0.2 版本发布分支
329 lines
7.2 KiB
Markdown
329 lines
7.2 KiB
Markdown
# 白牌项目版本化改造计划(混合方案 C)
|
||
|
||
## 核心策略
|
||
|
||
**版本发布路线**:
|
||
- 0.2.0: Login + Moment + Mine(无IM/TRTC SDK)
|
||
- 0.5.0: 增加 Message Tab + 用户关系(引入 NIMSDK)
|
||
- 1.0.0: 完整功能(引入 TRTC SDK)
|
||
|
||
**技术方案**(分支删除法 + 主分支保持干净):
|
||
- 主分支(`white-label-base`):完整代码,无任何宏,正常开发
|
||
- 提审分支(`release/v0.x-prepare`):提审前 7 天创建,物理删除不需要的代码和 SDK
|
||
- 悬浮 TabBar 设计(液态玻璃/毛玻璃)
|
||
- Mine 模块重构为"个人主页"模式
|
||
|
||
**分支策略**:
|
||
```
|
||
master (原项目)
|
||
↓
|
||
white-label-base (白牌主分支,完整代码,无宏)
|
||
↓
|
||
提审前创建发布分支(物理删除代码)
|
||
├─ release/v0.2-prepare → 删除 IM/TRTC
|
||
├─ release/v0.5-prepare → 删除 TRTC
|
||
└─ release/v1.0-prepare → 保留全部
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 1: 完善白牌基础功能(Day 1-3)
|
||
|
||
### 1.1 当前状态确认
|
||
|
||
**已完成**(white-label-base 分支):
|
||
- ✅ Swift TabBar(NewTabBarController,2 个 Tab)
|
||
- ✅ Moment 模块(NewMomentViewController + NewMomentCell)
|
||
- ✅ Mine 模块(NewMineViewController,基础版)
|
||
- ✅ API 域名加密(APIConfig.swift)
|
||
- ✅ GlobalEventManager(全局事件管理)
|
||
- ✅ 登录入口替换(PILoginManager.m,手动登录)
|
||
|
||
**待完善**:
|
||
- ⏳ 悬浮 TabBar 设计(当前是传统 TabBar)
|
||
- ⏳ Mine 个人主页模式(当前是菜单列表)
|
||
- ⏳ 自动登录入口替换(AppDelegate.m)
|
||
|
||
**策略**:在 white-label-base 分支继续开发,**不添加任何宏**
|
||
|
||
---
|
||
|
||
### 1.2 重构 NewTabBarController 为悬浮设计
|
||
|
||
**文件**:`YuMi/Modules/NewTabBar/NewTabBarController.swift`
|
||
|
||
**设计要点**:
|
||
1. 隐藏原生 TabBar
|
||
2. 创建自定义悬浮容器(两侧留白 16pt,底部留白 12pt)
|
||
3. 液态玻璃效果(iOS 18+)/ 毛玻璃效果(iOS 13-17)
|
||
4. 圆角胶囊形状(cornerRadius: 28)
|
||
5. 边框和阴影
|
||
|
||
---
|
||
|
||
### 1.3 重构 Mine 模块为个人主页模式
|
||
|
||
**文件**:
|
||
- `YuMi/Modules/NewMine/Controllers/NewMineViewController.m`(重构)
|
||
- `YuMi/Modules/NewMine/Views/NewMineHeaderView.h/m`(新建)
|
||
|
||
**设计目标**:
|
||
```
|
||
原设计:横向头部 + 菜单列表
|
||
新设计:个人主页模式
|
||
├─ 顶部:大圆形头像 + 昵称 + ID + 设置按钮
|
||
└─ 底部:用户发布的动态列表(复用 NewMomentCell)
|
||
```
|
||
|
||
---
|
||
|
||
### 1.4 替换自动登录入口
|
||
|
||
**文件**:`YuMi/Appdelegate/AppDelegate.m`
|
||
|
||
**修改方法**:`- (void)toHomeTabbarPage`
|
||
|
||
---
|
||
|
||
## Phase 2: 0.2 版本发布准备(Day 4-5)
|
||
|
||
### 2.1 创建发布分支
|
||
|
||
**时间**:提审前 7 天
|
||
|
||
**操作**:
|
||
```bash
|
||
git checkout white-label-base
|
||
git checkout -b release/v0.2-prepare
|
||
```
|
||
|
||
---
|
||
|
||
### 2.2 删除 IM/TRTC 相关代码
|
||
|
||
**创建删除脚本**:`scripts/prepare-v0.2.sh`
|
||
|
||
删除内容:
|
||
- YuMi/Modules/YMSession(会话列表)
|
||
- YuMi/Modules/YMChat(聊天页面)
|
||
- YuMi/Modules/YMRoom(房间模块)
|
||
- YuMi/Modules/YMCall(通话模块)
|
||
- YuMi/Modules/Gift(礼物系统)
|
||
- YuMi/Modules/YMGame(游戏模块)
|
||
- YuMi/Global/GlobalEventManager.h/m
|
||
|
||
预计删除:50-80 个文件,~30,000 行代码
|
||
|
||
---
|
||
|
||
### 2.3 清理 Podfile
|
||
|
||
删除以下依赖:
|
||
- NIMSDK(IM SDK)
|
||
- TXLiteAVSDK_TRTC(TRTC SDK)
|
||
- SVGAPlayer(礼物动画)
|
||
|
||
保留基础依赖:
|
||
- AFNetworking
|
||
- MJRefresh
|
||
- SDWebImage
|
||
- Masonry
|
||
- GoogleSignIn
|
||
|
||
---
|
||
|
||
### 2.4 自动清理 import 引用
|
||
|
||
**脚本**:`scripts/clean-imports-v0.2.sh`
|
||
|
||
批量删除:
|
||
- `#import <NIMSDK/*>`
|
||
- `#import <TXLiteAVSDK/*>`
|
||
- `#import "GlobalEventManager.h"`
|
||
|
||
---
|
||
|
||
### 2.5 编译测试
|
||
|
||
- 清理缓存
|
||
- xcodebuild 编译
|
||
- 检查 IPA 大小(预期 ~40MB)
|
||
- 检查符号表(确认 SDK 完全移除)
|
||
|
||
---
|
||
|
||
## Phase 3: 资源准备与元数据(Day 6)
|
||
|
||
### 3.1 设计资源清单
|
||
|
||
**P0 资源**(提审必须):
|
||
- AppIcon(1 套)
|
||
- 启动图(1 张)
|
||
- TabBar icon(4 张)
|
||
|
||
**P1 资源**(建议完善):
|
||
- 点赞图标(2 张)
|
||
- 评论图标(1 张)
|
||
- 设置图标(1 张)
|
||
|
||
**设计规范**:
|
||
- 主色调:深紫 #4C3399 → 蓝 #3366CC
|
||
- TabBar:圆角 28pt,毛玻璃
|
||
- 图标:线性风格,2pt 描边
|
||
|
||
---
|
||
|
||
### 3.2 修改 Bundle ID
|
||
|
||
- Bundle Identifier:`com.newcompany.eparty.v02`
|
||
- Display Name:`EParty Lite`
|
||
- Version:`0.2.0`
|
||
- Build:`1`
|
||
|
||
---
|
||
|
||
### 3.3 准备 App Store 元数据
|
||
|
||
**应用名称**:EParty Lite / 派对时光 轻量版
|
||
**副标题**:Share Your Life Moments
|
||
**描述**:轻量级社交平台,分享生活每一刻
|
||
|
||
---
|
||
|
||
## Phase 4: 构建与提审(Day 7)
|
||
|
||
### 4.1 Archive 构建
|
||
|
||
```bash
|
||
xcodebuild -workspace YuMi.xcworkspace \
|
||
-scheme YuMi \
|
||
-configuration Release \
|
||
-archivePath build/YuMi-v0.2.xcarchive \
|
||
archive
|
||
```
|
||
|
||
---
|
||
|
||
### 4.2 导出 IPA
|
||
|
||
```bash
|
||
xcodebuild -exportArchive \
|
||
-archivePath build/YuMi-v0.2.xcarchive \
|
||
-exportPath build/YuMi-v0.2-IPA \
|
||
-exportOptionsPlist ExportOptions.plist
|
||
```
|
||
|
||
---
|
||
|
||
### 4.3 真机测试清单
|
||
|
||
**登录模块**:
|
||
- [ ] 手机号登录
|
||
- [ ] 验证码接收
|
||
- [ ] 登录状态持久化
|
||
|
||
**Moment 模块**:
|
||
- [ ] 列表加载
|
||
- [ ] 下拉刷新
|
||
- [ ] 点赞功能
|
||
- [ ] 卡片式 UI
|
||
|
||
**Mine 模块**:
|
||
- [ ] 个人主页显示
|
||
- [ ] 用户动态列表
|
||
- [ ] 设置按钮
|
||
|
||
**TabBar**:
|
||
- [ ] 悬浮效果
|
||
- [ ] 毛玻璃显示
|
||
- [ ] 切换流畅
|
||
|
||
---
|
||
|
||
### 4.4 上传 App Store
|
||
|
||
使用 Xcode Organizer 或 Transporter 上传
|
||
|
||
---
|
||
|
||
## Phase 5: 后续版本(Day 8+)
|
||
|
||
### 5.1 v0.5 版本(3 周后)
|
||
|
||
**删除内容**:只删除 TRTC,保留 IM
|
||
|
||
**Podfile**:
|
||
```ruby
|
||
pod 'NIMSDK' # ✅ 保留
|
||
# pod 'TXLiteAVSDK_TRTC' # ❌ 删除
|
||
```
|
||
|
||
**元数据**:
|
||
- Bundle ID:`com.newcompany.eparty.v05`
|
||
- Display Name:`EParty Plus`
|
||
|
||
---
|
||
|
||
### 5.2 v1.0 版本(7 周后)
|
||
|
||
**删除内容**:无(完整版本)
|
||
|
||
**Podfile**:保留所有依赖
|
||
|
||
**元数据**:
|
||
- Bundle ID:`com.newcompany.eparty`
|
||
- Display Name:`EParty`
|
||
|
||
---
|
||
|
||
## 时间轴总结
|
||
|
||
```
|
||
Day 1-3: 完善白牌基础功能
|
||
Day 4-5: 准备 v0.2 发布分支
|
||
Day 6: 资源准备与元数据
|
||
Day 7: 构建与提审
|
||
Week 4: v0.2 审核中
|
||
Week 7: 准备 v0.5(如果 v0.2 过审)
|
||
Week 11: 准备 v1.0(如果 v0.5 过审)
|
||
```
|
||
|
||
---
|
||
|
||
## 关键文件清单
|
||
|
||
### 脚本文件(6 个)
|
||
1. scripts/prepare-v0.2.sh
|
||
2. scripts/clean-imports-v0.2.sh
|
||
3. scripts/archive-v0.2.sh
|
||
4. scripts/export-v0.2.sh
|
||
5. scripts/prepare-v0.5.sh
|
||
6. ExportOptions.plist
|
||
|
||
### 文档文件(4 个)
|
||
1. docs/DESIGN_ASSETS_CHECKLIST.md
|
||
2. docs/APPSTORE_METADATA_v0.2.md
|
||
3. docs/TEST_CHECKLIST_v0.2.md
|
||
4. docs/WHITE_LABEL_ROADMAP.md
|
||
|
||
### 代码文件(white-label-base,4 个)
|
||
1. YuMi/Modules/NewTabBar/NewTabBarController.swift(重构)
|
||
2. YuMi/Modules/NewMine/Controllers/NewMineViewController.m(重构)
|
||
3. YuMi/Modules/NewMine/Views/NewMineHeaderView.h/m(新建)
|
||
4. YuMi/Appdelegate/AppDelegate.m(修改)
|
||
|
||
---
|
||
|
||
## 优势总结
|
||
|
||
**vs 编译宏方案**:
|
||
- ✅ 主分支代码干净(无宏污染)
|
||
- ✅ 实施简单(提审前删除即可)
|
||
- ✅ 维护成本低(主分支正常开发)
|
||
- ✅ 灵活性高(可随时调整删除内容)
|
||
- ✅ IPA 安全(物理删除,无残留)
|
||
|
||
**核心理念**:
|
||
> "主分支保持完整和干净,发布分支作为一次性的打包工具。"
|
||
|