Knotes 背后的故事

賀乙釗 Yizhao He
2016/12/20

關(guān)于 Knotes

Knotes 是 Mac 平臺(tái)高效、優(yōu)雅的 Kindle 標(biāo)注管理器,將 Kindle 用戶從繁重的手動(dòng)復(fù)制粘貼的標(biāo)注管理方式中解救出來。

Knotes
特性:
  1. 無需配置,連接即可同步
  2. 按作者、書名管理標(biāo)注
  3. 快速對(duì)書名、作者、標(biāo)注進(jìn)行全文搜索,
  4. 支持無干擾閱讀模式
  5. 自動(dòng)下載匹配圖書封面
  6. 干凈、優(yōu)雅的用戶界面
  7. 支持中文和英文
下載和定價(jià)

官網(wǎng) http://knotesapp.com/cn 即可下載,可試用7天,售價(jià) ¥35 元。

想法誕生

本人是一個(gè) Kindle 重度用戶。自從入手了 Paperwhite 之后就愛不釋手,吃早飯的時(shí)候會(huì)用 Kindle 看一些創(chuàng)業(yè)或者自我管理相關(guān)的書籍,睡前也會(huì)看小說助眠。

看書過程中會(huì)在 Kindle 中把很有感觸的文字標(biāo)注出來,或者做一些筆記。但我發(fā)現(xiàn)在 Kindle 上進(jìn)行標(biāo)注管理很費(fèi)勁,原因就是 Kindle 反應(yīng)速度比較慢,屏幕也小,用手指進(jìn)行點(diǎn)選操作不是很方便。而且我的 Kindle 是國(guó)內(nèi)亞馬遜賬號(hào),所以不支持亞馬遜的網(wǎng)頁版標(biāo)注管理。由此便產(chǎn)生了做一個(gè)桌面版軟件進(jìn)行管理的想法。

開發(fā)歷程

設(shè)計(jì)

最初的 Sketch Mockup

技術(shù)棧選擇

自從決定專心鉆研前端技術(shù),JavaScript 就成了我的主要開發(fā)語言。

而使用 JavaScript 開發(fā)桌面應(yīng)用,已經(jīng)有了成熟的 ElectronNW.js 技術(shù),原理都是將 Chrome 內(nèi)核進(jìn)行封裝,并提供 API 訪問系統(tǒng)資源和權(quán)限。雖然相當(dāng)于是瀏覽器包裝了 JavaScript 應(yīng)用到原生系統(tǒng),功能上和性能上相差其實(shí)也不是很大,Visual Studio Code, Slack, Atom 都是非常優(yōu)秀的 Electron 應(yīng)用。

Knotes 采用了 Electron 作為開發(fā)的基礎(chǔ),前端庫選擇了 Vue.js 開發(fā)單頁面應(yīng)用,UI 庫選擇了 Semantic-UI。

遇到的難題

第一次開發(fā) Mac 應(yīng)用難度還是很大的,因?yàn)檫@次的目標(biāo)平臺(tái)從瀏覽器變成了操作系統(tǒng),遇到的問題會(huì)多很多倍,也奇怪很多倍。

開發(fā)過程中的各種報(bào)錯(cuò)求助于 StackOverflow 和 Github repo 的 issue 不需要多說。

下面主要列舉一些使用 Electron 開發(fā) Mac 平臺(tái)應(yīng)用相關(guān)的問題。

目前 Knotes 是在 Mac App Store (簡(jiǎn)稱 MAS) 之外發(fā)行的 Electron 應(yīng)用。

在 MAS 之外發(fā)行應(yīng)用,好處是不用擔(dān)心 Sanbox 權(quán)限問題,限制小很多,但隨之而來是要自己解決銷售、License管理和版本更新問題。

銷售

銷售方面,采用了 FastSpring 接入在線商店,費(fèi)率為 8.9%。其實(shí)這個(gè)費(fèi)率還是挺高的,每個(gè)訂單 10% 的手續(xù)費(fèi),跟國(guó)內(nèi)的支付寶的 0.5% 相比簡(jiǎn)直貴出天際,但是 Knotes 的目標(biāo)用戶不僅僅是國(guó)內(nèi)用戶,所以使用了其他大的 Mac 軟件廠商常用的 FastSpring,據(jù)我所知,Sketch、PdfExpertCleanMyMac 等都是采用的 [FastSpring]。

License 管理

License 管理,這也是一個(gè)難題。之前做過 Chrome 的付費(fèi)應(yīng)用,但是是基于賬號(hào)系統(tǒng)的,所以付費(fèi)記錄跟著賬號(hào)走,完全沒有 License 的概念。而桌面應(yīng)用大部分都是無賬號(hào)系統(tǒng)的,只能通過 License 來驗(yàn)證是否購(gòu)買過。如果是原生的 MacOS 應(yīng)用,已經(jīng)有了很成熟的 License 解決方案 DevMate,但 Electron 無法集成 DevMate 提供的 SDK, 難度便陡增起來。最后我咨詢了 Markdown 編輯器 WordMark 的作者 Hao Liu, 也結(jié)合自己的經(jīng)驗(yàn),自己寫了 License 驗(yàn)證 API。所以目前最終的解決方案是:

  1. 使用 DevMate批量生成 License
  2. FastSpring 生成訂單的時(shí)候從預(yù)置的 License 中取出并郵件發(fā)送給用戶
  3. 用戶在 Knotes 中激活 License 時(shí)進(jìn)行 API 驗(yàn)證
版本更新

版本更新,Electron 本身采用了 Squirrel.Mac 進(jìn)行自動(dòng)更新的支持,而我需要做的是提供一個(gè)自動(dòng)更新的后臺(tái)以便 Knotes 進(jìn)行更新查詢和更新下載。最終采用了GitBook 開源的 Nuts,以 GitHub 的 release 作為版本管理的基礎(chǔ),Nuts 負(fù)責(zé)拉取最新版本號(hào)和最新的安裝 Zip 包并提供 API 查詢。

推廣

剛開發(fā)完的時(shí)候,去 v2ex 社區(qū)分享創(chuàng)造版發(fā)了帖: Knotes - Mac 版 Kindle 標(biāo)注管理軟件 贈(zèng)送激活碼 , 得到了 V 友們的肯定。

后來在 Product Hunt 上發(fā)帖宣布上線 Knotes - Product Hunt,也得到了 V 友和朋友圈好友的幫忙,最終成為當(dāng)日 Tech 主題下排名第二的項(xiàng)目。

Knotes @ Product Hunt

總結(jié)

Knotes 是我個(gè)人的第二款產(chǎn)品,也是第一款 Mac 應(yīng)用。從萌生想法到上線,陸陸續(xù)續(xù)開發(fā)了2個(gè)月,開發(fā)過程中充滿了喜悅和荊棘,深感做個(gè)人開發(fā)者不易,但堅(jiān)持下來卻堅(jiān)定了做自己產(chǎn)品的決心,雖前路漫漫而修遠(yuǎn),吾將上下而求索。

關(guān)于

賀乙釗

Knotes 作者,賀乙釗 (Yizhao He), 現(xiàn) USC CS Master,本科是北京郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)。

個(gè)人主頁: http://1mhz.me

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容