核对时间:2026-04-08
目标:帮助你快速理解这个 iOS 项目的结构、关键模块和上手路径。
这是一个 iOS 15+ 的 Swift 项目,工程名目录是 Lanu,主 Target 是 Gami(产物 Gami.app),当前共享 Scheme 为 Lanu_Debug / Lanu_Release(均指向 Gami)。
核心业务从代码看主要包括:
根目录关键内容:
Lanu/:主业务代码与资源Lanu.xcodeproj / Lanu.xcworkspace:工程与 workspacePodfile + Pods/:CocoaPods 依赖ThirdParty/TUIKit/:本地引入的 TIMCommon / TUIChatfastlane/:打包流程(fastlane ios beta)Lanu/ 下建议重点关注:
AppDelegate.swift、SceneDelegate.swift:启动与入口Manager/:业务管理层(账号、网络、IM、订单、房间、钱包等)Views/:页面与 UI(体量最大)Common/:公共组件(主题、扩展、基础视图、存储、日志)Assets.xcassets/、Localizable.xcstrings:资源与多语言代码规模(粗略):
388Views:241Manager:66Common:79AppDelegate 负责:
LNNetworkMonitor.startMonitoring()LNEventDeliver.notifyAppLaunchFinished()SceneDelegate 负责:
LNNavigationController(rootViewController: LNMainViewController())wasLogin == true 且网络可用时)LNMainViewController 是 UITabBarController,包含 4 个主 Tab:
其中除了 Home,其他 Tab 默认受登录态保护(未登录会弹登录面板)。
Views/ 负责界面与交互Manager/ 负责业务状态、网络调用、事件通知LNEventDeliver + 各 *ManagerNotify 协议观察状态变化这是一种偏“轻 MVVM/Manager 驱动”的组织方式,不是严格单向数据流框架。
网络核心在 LNHttpManager:
get/post/put/delete 封装signLNHttpResponse<T>code != 0 走业务错误LNNetworkConfig 根据环境切换 host:
https://test-api.gami.viphttps://api.gami.vipLNEventDeliver 基于 NSHashTable<AnyObject>.weakObjects() 维护观察者,提供:
addObserver/removeObservernotifyEventLNAppMainEvent、LNNetworkMonitorNotify、LNAccountManagerNotify)优点:接入简单。
风险:全局广播过多时,调用链和时序排查成本会上升。
LNAccountManager:登录、token 刷新、验证码倒计时、在线心跳LNProfileManager:用户资料、语音条、缓存、语言上报LNGameMateManager:游戏分类、陪玩技能、筛选项、入驻流程LNOrderManager:订单创建/取消/完成/退款/评价与折扣信息LNIMManager:会话列表、在线状态、官方消息、语音通话状态LNRoomManager:房间创建/加入/离开、大厅入口、房间搜索LNPurchaseManager:钱包信息、商品列表、StoreKit2 支付与验单LNConfigManager:通用配置和国家码加载LNDeeplinkManager:统一路由 URL Scheme + Universal Link平台:iOS 15.0,并在 post_install 强制所有 Pods 最低版本为 15.0。
可见主要还有:
其中部分仓库来自内部 Git 服务(git.gami-internal.vip)。
fastlane ios beta:自增 build number -> cocoapods -> 打包 ad-hocfastlane/Fastfile 当前写的是 scheme: "Lanu",与仓库内共享 Scheme(Lanu_Debug/Lanu_Release)不一致;在新环境中可能需要补本地 Scheme 或调整 Fastfile。Gemfile 已固定 cocoapods 1.16.2Lanu.xcworkspace 打开工程(不是 .xcodeproj)。bundle install + bundle exec pod install(如 Pods 需更新)。Lanu_Debug 或 Lanu_Release Scheme(对应 Target Gami)。LNAppConfig.shared.curEnv(测试/线上),并确保对应后端可访问。README.md 目前是空文件,建议后续保留一个面向团队的最小启动说明。Gami,共享 Scheme 是 Lanu_Debug / Lanu_Release,目录名是 Lanu,新同学容易混淆。Info.plist 中 NSAllowsArbitraryLoads = true,上线前建议确认安全策略要求。Lanu/AppDelegate.swiftLanu/SceneDelegate.swiftLanu/Views/Main/LNMainViewController.swiftLanu/Manager/LNEventDeliver.swiftLanu/Manager/Network/LNHttpManager.swiftLanu/Manager/Account/LNAccountManager.swiftLanu/Manager/IM/LNIMManager.swiftLanu/Manager/Order/LNOrderManager.swiftLanu/Manager/Room/LNRoomManager.swiftLanu/Views/Home/ + Lanu/Views/IM/ 对照看页面落地这是一个功能较完整、业务模块很多的社交/陪玩类 iOS 项目,采用 Manager + View + 全局事件 的组织方式,网络层和业务模块边界相对清晰,上手时优先抓住“启动链路 + 网络层 + 账号/IM/订单/房间”四条主线即可快速建立全局认知。