贺乙钊 Yizhao He
2016/12/20
关于 Knotes
Knotes 是 Mac 平台高效、优雅的 Kindle 标注管理器,将 Kindle 用户从繁重的手动复制粘贴的标注管理方式中解救出来。
特性:
- 无需配置,连接即可同步
- 按作者、书名管理标注
- 快速对书名、作者、标注进行全文搜索,
- 支持无干扰阅读模式
- 自动下载匹配图书封面
- 干净、优雅的用户界面
- 支持中文和英文
下载和定价
官网 http://knotesapp.com/cn 即可下载,可试用7天,售价 ¥35 元。
想法诞生
本人是一个 Kindle 重度用户。自从入手了 Paperwhite 之后就爱不释手,吃早饭的时候会用 Kindle 看一些创业或者自我管理相关的书籍,睡前也会看小说助眠。
看书过程中会在 Kindle 中把很有感触的文字标注出来,或者做一些笔记。但我发现在 Kindle 上进行标注管理很费劲,原因就是 Kindle 反应速度比较慢,屏幕也小,用手指进行点选操作不是很方便。而且我的 Kindle 是国内亚马逊账号,所以不支持亚马逊的网页版标注管理。由此便产生了做一个桌面版软件进行管理的想法。
开发历程
设计
技术栈选择
自从决定专心钻研前端技术,JavaScript 就成了我的主要开发语言。
而使用 JavaScript 开发桌面应用,已经有了成熟的 Electron 和 NW.js 技术,原理都是将 Chrome 内核进行封装,并提供 API 访问系统资源和权限。虽然相当于是浏览器包装了 JavaScript 应用到原生系统,功能上和性能上相差其实也不是很大,Visual Studio Code, Slack, Atom 都是非常优秀的 Electron 应用。
Knotes 采用了 Electron 作为开发的基础,前端库选择了 Vue.js 开发单页面应用,UI 库选择了 Semantic-UI。
遇到的难题
第一次开发 Mac 应用难度还是很大的,因为这次的目标平台从浏览器变成了操作系统,遇到的问题会多很多倍,也奇怪很多倍。
开发过程中的各种报错求助于 StackOverflow 和 Github repo 的 issue 不需要多说。
下面主要列举一些使用 Electron 开发 Mac 平台应用相关的问题。
目前 Knotes 是在 Mac App Store (简称 MAS) 之外发行的 Electron 应用。
在 MAS 之外发行应用,好处是不用担心 Sanbox 权限问题,限制小很多,但随之而来是要自己解决销售、License管理和版本更新问题。
销售
销售方面,采用了 FastSpring 接入在线商店,费率为 8.9%。其实这个费率还是挺高的,每个订单 10% 的手续费,跟国内的支付宝的 0.5% 相比简直贵出天际,但是 Knotes 的目标用户不仅仅是国内用户,所以使用了其他大的 Mac 软件厂商常用的 FastSpring,据我所知,Sketch、PdfExpert 、CleanMyMac 等都是采用的 [FastSpring]。
License 管理
License 管理,这也是一个难题。之前做过 Chrome 的付费应用,但是是基于账号系统的,所以付费记录跟着账号走,完全没有 License 的概念。而桌面应用大部分都是无账号系统的,只能通过 License 来验证是否购买过。如果是原生的 MacOS 应用,已经有了很成熟的 License 解决方案 DevMate,但 Electron 无法集成 DevMate 提供的 SDK, 难度便陡增起来。最后我咨询了 Markdown 编辑器 WordMark 的作者 Hao Liu, 也结合自己的经验,自己写了 License 验证 API。所以目前最终的解决方案是:
- 使用 DevMate批量生成 License
- FastSpring 生成订单的时候从预置的 License 中取出并邮件发送给用户
- 用户在 Knotes 中激活 License 时进行 API 验证
版本更新
版本更新,Electron 本身采用了 Squirrel.Mac 进行自动更新的支持,而我需要做的是提供一个自动更新的后台以便 Knotes 进行更新查询和更新下载。最终采用了GitBook 开源的 Nuts,以 GitHub 的 release 作为版本管理的基础,Nuts 负责拉取最新版本号和最新的安装 Zip 包并提供 API 查询。
推广
刚开发完的时候,去 v2ex 社区分享创造版发了帖: Knotes - Mac 版 Kindle 标注管理软件 赠送激活码 , 得到了 V 友们的肯定。
后来在 Product Hunt 上发帖宣布上线 Knotes - Product Hunt,也得到了 V 友和朋友圈好友的帮忙,最终成为当日 Tech 主题下排名第二的项目。
总结
Knotes 是我个人的第二款产品,也是第一款 Mac 应用。从萌生想法到上线,陆陆续续开发了2个月,开发过程中充满了喜悦和荆棘,深感做个人开发者不易,但坚持下来却坚定了做自己产品的决心,虽前路漫漫而修远,吾将上下而求索。
关于
Knotes 作者,贺乙钊 (Yizhao He), 现 USC CS Master,本科是北京邮电大学计算机科学与技术专业。
个人主页: http://1mhz.me