前言:
Telegram 这个项目 clone 的时候我们就能直观的看到这个项目是有多大,整整32800多个文件需要 clone 下来,还经常因为在 clone 过程中丢失文件造成各种各样的问题;
更痛苦的是,当我们编译出项目文件,文件里几乎找不到任何注释信息,导致我们基于Telegram二次开发时极大地上手难度,与信息壁垒,但我们将程序Run起来以后,又会惊叹于此App简洁且流畅的使用体验;
从简入繁,我们先从App页面逻辑跳转以及它们所对应的控制器逐个击破。
分析版本:Telegram 8.7.1
一、登录流程
RMIntroViewController:
App启动完毕我们看见的第一个界面,由pageView组成六个介绍文案,提供了 Start Messaging
交互按钮,进入到登录流程界面,第一个页面还挺让我诧异,此页面居然没有被swift重构,还是使用的OC。
AuthorizationSequencePhoneEntryController:
点击 Start Messaging
以后进入的页面,输入对应的国家区码和手机号,确认无误以后,点击右上角 Next
按钮,进入验证码界面。
AuthorizationSequenceCodeEntryController:
验证码界面,输入收到的验证码,验证成功以后就进入主界面。
二、主界面
TabBarController:
登录以后的 rootViewController
分为三个模块。
ChatListController:
消息列表模块, TabBarController
默认展示的控制器,负责收发消息的管理。
ContactsController:
联系人模块,负责联系人管理。
PeerInfoScreen:
设置模块, PeerInfoScreen
从命名上就可以看出它跟其他 Controller
的不同,它是作为 Screen(场景)
来构建了多个公共模块,比如 ChatController
点击右上角按钮进入的详情页,以及设置模块右上角 Edit
按钮,切换成编辑模式。
三、Debug界面
Review 代码时发现,为了方便调试,Telegram 提供了 DebugController
,进入这个界面的方式很有意思:连续点击 Tabbar
第三个item Settings
10下 ,我们就能进入到隐藏的Debug界面。
以上,就是Telegram提供的所有的一级页面。