Knotes 背后的故事

贺乙钊 Yizhao He
2016/12/20

关于 Knotes

Knotes 是 Mac 平台高效、优雅的 Kindle 标注管理器,将 Kindle 用户从繁重的手动复制粘贴的标注管理方式中解救出来。

Knotes
特性:
  1. 无需配置,连接即可同步
  2. 按作者、书名管理标注
  3. 快速对书名、作者、标注进行全文搜索,
  4. 支持无干扰阅读模式
  5. 自动下载匹配图书封面
  6. 干净、优雅的用户界面
  7. 支持中文和英文
下载和定价

官网 http://knotesapp.com/cn 即可下载,可试用7天,售价 ¥35 元。

想法诞生

本人是一个 Kindle 重度用户。自从入手了 Paperwhite 之后就爱不释手,吃早饭的时候会用 Kindle 看一些创业或者自我管理相关的书籍,睡前也会看小说助眠。

看书过程中会在 Kindle 中把很有感触的文字标注出来,或者做一些笔记。但我发现在 Kindle 上进行标注管理很费劲,原因就是 Kindle 反应速度比较慢,屏幕也小,用手指进行点选操作不是很方便。而且我的 Kindle 是国内亚马逊账号,所以不支持亚马逊的网页版标注管理。由此便产生了做一个桌面版软件进行管理的想法。

开发历程

设计

最初的 Sketch Mockup

技术栈选择

自从决定专心钻研前端技术,JavaScript 就成了我的主要开发语言。

而使用 JavaScript 开发桌面应用,已经有了成熟的 ElectronNW.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,据我所知,SketchPdfExpertCleanMyMac 等都是采用的 [FastSpring]。

License 管理

License 管理,这也是一个难题。之前做过 Chrome 的付费应用,但是是基于账号系统的,所以付费记录跟着账号走,完全没有 License 的概念。而桌面应用大部分都是无账号系统的,只能通过 License 来验证是否购买过。如果是原生的 MacOS 应用,已经有了很成熟的 License 解决方案 DevMate,但 Electron 无法集成 DevMate 提供的 SDK, 难度便陡增起来。最后我咨询了 Markdown 编辑器 WordMark 的作者 Hao Liu, 也结合自己的经验,自己写了 License 验证 API。所以目前最终的解决方案是:

  1. 使用 DevMate批量生成 License
  2. FastSpring 生成订单的时候从预置的 License 中取出并邮件发送给用户
  3. 用户在 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 @ Product Hunt

总结

Knotes 是我个人的第二款产品,也是第一款 Mac 应用。从萌生想法到上线,陆陆续续开发了2个月,开发过程中充满了喜悦和荆棘,深感做个人开发者不易,但坚持下来却坚定了做自己产品的决心,虽前路漫漫而修远,吾将上下而求索。

关于

贺乙钊

Knotes 作者,贺乙钊 (Yizhao He), 现 USC CS Master,本科是北京邮电大学计算机科学与技术专业。

个人主页: http://1mhz.me

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容