一個簡單的 GitHub iPhone 客戶端:MrCode
MrCodeis a simple GitHub iPhone App that can cache Markdown content (include images in HTML) for read it later.
MrCode是一個簡單的 GitHub iPhone 客戶端,可以緩存項目中的 Markdown 渲染之后的 HTML 及其圖片,方便稍后閱讀。
MrCode命名源自 Mr. Robot(黑客軍團,當時出了一兩集就有人說是神劇的美劇)。
Why make this
最初目的是想在 iPhone 上讀這本書 guidetodatamining,每一章都是 Markdown 格式,用 Safari 進行閱讀,個人認為 GitHub 渲染后(包含代碼)的 HTML 是閱讀效果最好的。
雖然 iOctocat、CodeHub 這些 App 已經有 GitHub 非常全面的功能,但缺少我想要的緩存功能。
因為這書每個章節很長,班車上半小時內看不完,為了減少手機流量消耗才打算做一個 App 在本地緩存 Markdown 文件渲染后的 HTML,以及 HTML 中的圖片。
Features
- 實現了簡單易用的 GitHub API Client(基于 Safari 進行 OAuth 授權),官方提供的 octokit.objc 有點復雜
- 不需要在應用內輸入 GitHub 密碼,只要跳 Safari 登錄 GitHub 進行 OAuth 授權
- 緩存 star 過的資源庫以及自己的公開資源庫
- 可以 star / fork / watch 資源庫
- 緩存 .md 或 .markdown 文件的渲染后的 HTML 及其圖片
- 可以按語言/時間段查看 GitHub Trending(ThanksCodeHub提供的 GitHub-Trending)
另外,整個應用全部使用 Storyboard 進行頁面跳轉的邏輯關系,UI 用 Masonry 庫純手工寫布局。事實上這個應用沒有大的難點,基本上全部是 UITableView 的簡單使用,用 Masonry 簡單布局 UITableViewCell。
將 HTML 中的image.src替換成原生進行下載并緩存是用了這篇文章(UIWebView與JS的深度交互)的思路和代碼(需要一些修改)。
Screenshots
Build
Requirements
- iOS 8.0+
- Xcode 6.4+
Build to your device with Xcode 7
git clone然后打開MrCode.xcworkspace。
如果像我這樣沒有 Apple 開發者賬號,直接使用 Xcode 7 連接上你的設備,簡單設置一下就行(參考 Xcode 7 真機調試詳細步驟)。
p.s. App 首次安裝到設備之后,要在設置-通用-描述文件中信任你在 Xcode Accounts 的這個開發者。
(optional) Use your own GitHub application Client ID & Secret
目前源碼已經包含可用的 Client ID & Secret,如果要改成你自己的,要在 GitHub Developer applications 創建新的 application,得到 Client ID & Secret 填到MrCode/MrCode/AppDelegate.m即可。
Issues
目前最初的主要功能已經夠用(其實在實現的過程中已經花了太多時間調其他功能了),但還是有很多問題,例如:
-
star 一個新的資源庫時不會更新本地的緩存(技術問題,要修復比較繁瑣),也沒用 KVO / Notification 更新已經顯示的 UI
-
Model 類里面混用了類方法和成員方法
-
代碼很爛,通用的 WebViewController 為了便捷耦合了不該有的屬性
-
原生下載圖片緩存后,用 JS 更新 WebView 的 HTML 有時不會生效(返回并重新進入沒問題)
-
more...
Thanks
Thanks to these powerful projects.
- CocoaPods
- AFNetworking
- MJExtension
- OcticonsIOS
- Masonry
- UITableView+FDTemplateLayoutCell
- DateTools
- SDWebImage
- ChameleonFramework
- YTKKeyValueStore
- MJRefresh
- MBProgressHUD
- WebViewJavascriptBridge
- MMPopupView
- KxMenu