前言:
Telegram 這個(gè)項(xiàng)目 clone 的時(shí)候我們就能直觀的看到這個(gè)項(xiàng)目是有多大蟹倾,整整32800多個(gè)文件需要 clone 下來,還經(jīng)常因?yàn)樵?clone 過程中丟失文件造成各種各樣的問題;
更痛苦的是,當(dāng)我們編譯出項(xiàng)目文件,文件里幾乎找不到任何注釋信息纤怒,導(dǎo)致我們基于Telegram二次開發(fā)時(shí)極大地上手難度,與信息壁壘天通,但我們將程序Run起來以后泊窘,又會(huì)驚嘆于此App簡(jiǎn)潔且流暢的使用體驗(yàn);
從簡(jiǎn)入繁像寒,我們先從App頁(yè)面邏輯跳轉(zhuǎn)以及它們所對(duì)應(yīng)的控制器逐個(gè)擊破烘豹。
分析版本:Telegram 8.7.1
一、登錄流程
RMIntroViewController:
App啟動(dòng)完畢我們看見的第一個(gè)界面诺祸,由pageView組成六個(gè)介紹文案携悯,提供了 Start Messaging
交互按鈕,進(jìn)入到登錄流程界面筷笨,第一個(gè)頁(yè)面還挺讓我詫異憔鬼,此頁(yè)面居然沒有被swift重構(gòu),還是使用的OC胃夏。
AuthorizationSequencePhoneEntryController:
點(diǎn)擊 Start Messaging
以后進(jìn)入的頁(yè)面轴或,輸入對(duì)應(yīng)的國(guó)家區(qū)碼和手機(jī)號(hào),確認(rèn)無誤以后仰禀,點(diǎn)擊右上角 Next
按鈕照雁,進(jìn)入驗(yàn)證碼界面。
AuthorizationSequenceCodeEntryController:
驗(yàn)證碼界面答恶,輸入收到的驗(yàn)證碼饺蚊,驗(yàn)證成功以后就進(jìn)入主界面。
二悬嗓、主界面
TabBarController:
登錄以后的 rootViewController
分為三個(gè)模塊污呼。
ChatListController:
消息列表模塊, TabBarController
默認(rèn)展示的控制器烫扼,負(fù)責(zé)收發(fā)消息的管理曙求。
ContactsController:
聯(lián)系人模塊,負(fù)責(zé)聯(lián)系人管理映企。
PeerInfoScreen:
設(shè)置模塊悟狱, PeerInfoScreen
從命名上就可以看出它跟其他 Controller
的不同,它是作為 Screen(場(chǎng)景)
來構(gòu)建了多個(gè)公共模塊堰氓,比如 ChatController
點(diǎn)擊右上角按鈕進(jìn)入的詳情頁(yè)挤渐,以及設(shè)置模塊右上角 Edit
按鈕,切換成編輯模式双絮。
三浴麻、Debug界面
Review 代碼時(shí)發(fā)現(xiàn),為了方便調(diào)試囤攀,Telegram 提供了 DebugController
软免,進(jìn)入這個(gè)界面的方式很有意思:連續(xù)點(diǎn)擊 Tabbar
第三個(gè)item Settings
10下 ,我們就能進(jìn)入到隱藏的Debug界面焚挠。
以上膏萧,就是Telegram提供的所有的一級(jí)頁(yè)面。