# Ptt-iOS 開發文件 ###### 維護人: Denken ###### tags: `Ptt App` ###### 位置: [主目錄](https://hackmd.io/@twbbs/Root)/iOS/ ## [置頂] 專案文件 - Code https://github.com/Ptt-official-app/Ptt-iOS - API 文件 - [go-pttbbs](https://github.com/Ptt-official-app/go-pttbbs):[Swagger](https://api.devptt.dev:5000/) - [go-bbs](https://github.com/Ptt-official-app/go-bbs):[Google Docs](https://docs.google.com/document/d/18DsZOyrlr5BIl2kKxZH7P2QxFLG02xL2SO0PzVHVY3k/) - [舊版文件](https://webptt.azurewebsites.net/swagger/index.html) - Zeplin 設計稿 https://app.zeplin.io/project/5d7346333838ff497428d1c5 ## 加入方式 由於開發階段的內部討論與變動較快,目前會需要你主動要求加入。可以分成以下階段: 1. 在 [g0v slack](https://g0v-tw.slack.com) 找負責人「denkeni」,會協助你加入 Ptt-iOS 的 Telegram 群組。 2. 協助你加入 Zeplin、TestFlight、GitHub 等相關文件程式碼。 3. 協助你加入 Ptt 官方 app 籌備小組的 Telegram 主群組。 這之後就有足夠資訊,可以跟進專案近況。 ## 參與功能開發 有兩種參與模式: - 參與每週線上大會議,主動跟進並提出想做的功能 - 認領負責人不定期釋出的功能開發需求項目(會放在 [未認領的 GitHub Issues](https://github.com/Ptt-official-app/Ptt-iOS/issues?q=is:open+is:issue+no:assignee) 與公告在 Ptt-iOS 的 Telegram 群組) 參與流程: 1. 建議在 Ptt-iOS 的 Telegram 群組先提出討論或舉手認領後,記錄在 GitHub Issues 以免重工。 3. 負責人會再協助給予 GitHub 的 Write 權限,開發階段可以隨時 push 上自己的 branch。 4. 完成時再發 pull request,由其他成員協助 review。 幾點提醒: - 廣泛接受原生方式(layoutSubviews、Auto Layout、Storyboard、SwiftUI)來刻畫面。 - 採用 MVC + Coordinator 架構,但並不強制功能開發組學習或實作 coordinator;架構組負責 coordinator 與流程整合。 - 推薦遵循的 [commit message guidelines](https://chris.beams.io/posts/git-commit/),要求首行的首字大寫且行末無句點。 P.S. 預計在上架 App Store 後,將會對外公開專案程式碼以及 Ptt-iOS 的 Telegram 群組,並轉為一般開源專案的協作模式([Creating a pull request from a fork](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork))。 # 專案初始化 * Clone or Download ZIP of the project on GitHub. * Build with Xcode, and make sure you've installed [SwiftGen](https://github.com/SwiftGen/SwiftGen/tree/stable?tab=readme-ov-file#installation) and [Swiftlint](https://github.com/realm/SwiftLint). * If you encounter the error shown below when building, make sure there are no spaces in the path of the project folder. ![PhaseScriptExecutionfailed](https://hackmd.io/_uploads/ryDYlgTlC.png) from: https://github.com/Ptt-official-app/Ptt-iOS/pull/92 # 專案討論文件 ## 架構:MVC + C (Coordinator) https://github.com/Ptt-official-app/Ptt-iOS/pull/12 ## DEVELOP 功能開發中 部分開發中功能、尚未排入初版的功能,已經用 `#if DEVELOP` 區隔出來:功能介面保留於 DEBUG 模式,但不會在 RELEASE 版本顯示出來。 如需預覽 RELEASE 版本,可以到 Xcode 專案設定 - Build Settings - Swift Compiler - Custom Flags/Active Compilation Conditions - Debug 暫時移除 DEVELOP。 ### 2020-12-23 會議記錄 出席人員:Denken, Marcus, 又鋼, Anson, Jacqueline, Teemo. #### 議程 - 討論分享對 coordinator pattern 的想法或經驗 - 討論分享對於這個 coordinator 實作版本的意見 - 最後決策 #### 決策選項 1. 接受 merge 此 PR,這會使得後續功能開發也需實作此 coordinator 的規格。由各位夥伴提出的調整建議,則在 merge 之後再請實作者補上。 2. 暫不 merge 此 PR。由於之後預期將會展開更多功能開發,這會使得實作者後續若希望繼續推動 coordinator pattern,可能要考慮另拆成小型 PR 來分別完善或逐步試行。 希望盡量以共識決方式。 #### 會議經過 - Anson 與 Marcus 的 coordinator 使用經驗,也是有 base coordinator 來 subclass - 多數人傾向決策 2 原因包含比較不影響開發 or 應該要小範圍試行 - 少數人支持決策 1 主要考量拖太久 merge 不易 #### 最後決策:1 - 切割出架構組(請 Anson 加入協助)與功能開發組 - 功能開發組:可沿用既有 UIKit 的 push/present 來開發,未來亦不強制使用 coordinator(以便不影響開發)。 - 架構組:須負責未來後續整合功能開發組的頁面流程,以及補足 review 過程中提出的建議。