说说我出道后的处女作:剪贴板神器 iPaste

2015 年底,我离开了这辈子最后一家公司,成为一名自由职业者。而 iPaste,是我独立开发的第一款 macOS 产品。

1.7 年过去了,在发布新版 iPaste 时,说说这款让我不再青涩的作品。

—– 长文开始警戒线;不喜请绕行 —–

0) 起初,「贴贴板」并不算产品

如果现在做个新产品,事先一定会有充分的调研,比如用户需求是否真实存在、市场容量、竞品分析、技术可行性分析等等,然后才会立项。

之所以说不算产品,是因为当初做「贴贴板」时,完全跳过了这些环节,直接开始码;更像是个练手的项目。怎么回事?主要是当时刚刚出来自己单干,已经至少 3 年没写代码了,做什么领域的产品,都行,也都不行。在脑子一热决定先做 macOS 时,脑子里第一个冒出来的就是贴贴板这个点子,因为自己平时太需要剪贴板增加工具这类产品了。

咦,你可能好奇,说好的是 iPaste,怎么变出个贴贴板?其实,这个产品就是以「贴贴板」这个名字问世的,并保持了最开始的大半年时间。2016 年 9 月底才更名为 iPaste;这是后话,后面再提。

这里衍伸出一个话题:做产品,是做自己需要的产品,还是做大众需要的产品?当然,如果这两者重合,最好。如果不,建议起步时选择自己需要的产品。最直接的好处是,你自己就知道产品应该做成什么样子,跳过了用户调研的环节,也不至于跑偏。

不过,这个方式有个很大的局限:通常,自己的需求有限,并且会是个小点子,不利于产品做大。而且,产品做大后,就不再是当初自己想要的东西了,又变成了做大众需求的产品。所以,根本上是 在做自己需求的产品的时候,摸过出做产品的路子,进而推演到大众需求。

这里引用在 IndieHacker 上看到的一段话。

If you build a product for yourself…, there’s probably a million others like you out there. Maybe not a billion, but unless you’re a freak, there’s a million.

精准的翻译是:通常你需要的,别人也需要的;这些「别人」,没有千万、也有百万,除非你是朵奇葩。

1) iPaste 夺走我的第 1 次,一次又一次

就是这么一个不算产品的产品,却 让我经历了无数的从 0 到 1

  • 第一次学习 Swift
  • 第一次学习 macOS 开发
  • 第一次给产品起名
  • 第一次设计 Logo
  • 第一次独立完成一个产品
  • 第一次审核被拒(以及 N 次)
  • 第一次收到用户付费
  • 第一次收到用户反馈
  • 第一次收到海外用户反馈
  • 第一次推广
  • 第一次付费推广
  • 第一次开源代码给别人用
  • 第一次…

1.0) Swift 与 macOS 开发

这部分在 Mac 开发的神秘面纱:后娘养的嫡长子 里有介绍,这里仅简单的提及。

对于 iPaste 而言,核心的部分是系统剪贴板。也即,能够记录用户曾经复制的内容,并且能 100% 准确地还原。难就难在这 100%,因为用户可能会在任意程序中、复制任意格式的数据,如纯文本、格式化文本、图片、文件等等。

其实,我试了当时的一些竞品,包含非常知名的,并没有做到这一点。比如,在复制并粘贴到 Numbers 时,会有一个单元格的错位。产品深处这样的问题,你在他们高大上的宣传中自然是看不到的。而 贴贴板 就做到了这一点,所以当时我还打出了「支持任意格式,不服来战」的口号。核心的,就是将 NSPasteboardItem 中的数据,存储为 Data;在粘贴时,再将其写回系统剪贴板。

不过,后来发现,某些格式还是有问题的。比如,在 Sketch 中复制 svg 格式的图片时,系统剪贴板中会产生 com.facebook.semaphore 这种类型。而对于这种类型 NSPasteboardItem.data(forType type: String) 这个函数会卡死 10 几秒。我试了几款知名的竞品,也有两样的问题,看来确实是 macOS 系统有 Bug。不过,这种情况还是相当少见,在我自己用 iPaste 的一年多时间里,仅遇到过这种情况(别试 iPaste 了,因为已经改掉了;但是可以试试你手上的工具😂)

再有,就是 macOS 沙盒的限制。具体到贴贴板,就是 如何将系统剪贴板中的内容粘贴到当前应用。要做到这一点,有多种方式,速度最快的,是发送 Command + V 键盘指令,模拟用户按下粘贴快捷键。不过,在沙盒模式下,这一方式直接不干活。

能在沙盒模式下干活的,就使用 Apple Script 来发送 Command + V。可是,在上架 Mac App Store 时被拒。反观所有已经上架 Mac App Store 的同类应用,都是让用户再从其官方下载一个所谓的插件、助手,基本都是安装 Apple Script 来实现自动粘贴。最后,我也从了,用了类似的方式。

这里再 吐槽一下 macOS 沙盒模式,已经裹足不前好几年了。对于自动粘贴这样的需求,不支持的理由无外乎是安全。可是,这样的不作为,直接导致用户下载安装一个自己不可能验证安全的助手。在我看来,只是将安全的皮球踢给了用户,撇清了自己的责任而已。

1.1) 独立完成一个产品

一个产品完整的生命周期,所涉及的点是非常多的:产品定义、市场研究、竞品分析、设计、开发、测试、上架、运营、推广、客服等等。要独自做好这些事,确实是很大的挑战。

当然,由于精力和能力有限,我也不可能做好所有的方面,目前主要的精力是开发和推广。对于做不好的地方,可以:

  • 简单做一下,将就着;
  • 花时间学习,做好;
  • 请人帮忙做。

不同的事,处理的方式不同。

  • 比如 Logo 的设计,我目前倾向于请人做。比如 Klib 的图标,是由 Allen 帮忙设计的。
  • 比如程序里的图标,我基本上是在网上免费图标的基础上,简单修改下。
  • 比如推广,很难外包给别人,只能自己硬着头皮上。

其实,我还是挺愿意花时间折腾自己目前不擅长的事。不过,毕竟时间有限,还是要 把时间用在自己的长处,把短处外包给更专业的人完成

另外,自己一个人做也是有好处的。比如,不需要与人商量,就减少了很多沟通成本。尤其是各方意见不一致时,要达到最终结论,通常需要消耗大量的时间,甚至是返工并带来额外开发成本。而一个人,则没有这样的问题。

在实际做事的过程中,也养成了自己的习惯,比如:

  • 使用 Omni Focus 管理项目要做的事、测试用例
  • 在开发功能时,就完善所有单元测试、测试用例
  • 数据结构、UI、业务逻辑的开发步骤
  • 使用虚拟机来测试操作系统的不同版本、不同语言

建立这些习惯的过程是痛苦的,因为要摸索所有的可能性,摒弃不适合的,最终形成适合自己的方式。而一旦建立,会有很大的收益。在下次做类似的事情时,好的习惯会大大提高效率,避免走大的弯路。

1.2) 第一次出门吆喝

自己辛苦做出来的产品,自然是希望更多人用;能赚更多钱,当然更好。可是,酒香也怕巷子深,尤其现在大家的注意力被各种事情分散着,要在这样的前提下,让更多需要的朋友知道自己的产品,是个很大的挑战。

要增加产品的爆光,最直接的就是在媒体上报道。回过头来看,从时间和效果上看,当时这几个媒体还是不错的:

  • V2EX
    • 这里聚集了很多愿意尝鲜的极客,他们愿意尝试那些新鲜出炉的粉嫩产品,并予以自己的肯定和鼓励。
  • 36kr Next
    • 现在,这个产品基于处于半死不活状态,我感觉。
    • 当年,在 Next 发布贴贴板,还是带来了不少的流量。
  • Mac 玩儿法
    • 自己认真接触的第一个自媒体,是 Frank 一个人做的,佩服。

而这些,全部是国内的媒体。如何在海外推广?很是头大。其中,我尝试了 平生第 1 次付费推广,是在 Two Dollar Tuesday,当时,其官方的规则是:

You discount your app to $1.99 in the App Store for 48 hour promo (Tuesday & Wednesday).

We will promote your deal via e-mail, our website, Facebook & Twitter.

We then do a revenue split after Apple’s cut. On a $1.99 app, you get $1.40. So we get $0.70 to us per sale on Tuesday only. Wednesday you keep 100% of proceeds.

We have you pay us for the first 100 sales ahead of time ($70).

Finally, we have a $1,000 MAX on the amount due to us. Meaning, no matter how many copies we sell on Tuesday, you can never owe us more than $1,000.

精准翻译过来,就是:

  • 我将应用降价为 $1.99
  • 周二的收入,对方提成 30%
  • 对方至少收 100 份的费用,即 $70,最多收 $1000

实际的效果,在这两天仅售出 92 份、$126,除去先前支付的 $70,还剩 $56,相当于每份 $56 / 92 = $0.6,白菜价。

于是,我之后再没试过付费推广…

需要注意的是,媒体的效果主要有 2 方面

  • 突击爆光
    • 尤其在产品发布的时候,多家媒体同时爆光,甚至会有 霸屏 的效果。
    • 比如,当用户在微博上看到 iPaste 的报道,可能跳过了。可如果接着又在少数派看到、在即刻订阅上看到,就肯定会加深印象。或许会生出兴趣,尝试一番。
  • 为之后的搜索做铺垫
    • 我们在需要某类产品时,除了向周围的高手求教,也可能自己去互联网搜索。而这些媒体的报道,则会成为被搜索到的基础。尤其是 权威媒体的报道,会有更高的搜索权重
    • 这里说一个小技巧:自己在写文章时,要「面向搜索引擎」,而不仅仅是标题党。比如,「夜深了,熄灯了,老公竟然不理我,还在玩这款游戏?!」这样的标题,其实对于搜索引擎并不友好。对于标题这样重要的因素,不包含产品的名字,是不能接受的。

不过,媒体资源毕竟是有限的,你总不可能天天被报道吧?在更长的时间范围内,都要靠用户的自发传播,和自己的影响力。

对于口碑传播,当然首先要靠产品的硬实力,毕竟首先产品要好,用户才愿意消耗自己品牌价值,去推荐你的产品。当然,这其中也存在一定程度的可操作性,比如在程序角度诱导用户分享,以及分享送 Pro 之类的活动。

对于自己的影响力,就需要长期建设了。比如,我最近强迫自己每周二早 8 点在自己的「自在开发」公众号中写篇技术长文(包括本篇),也在自己的博客、少数派、掘金、简书等全媒体发布。这些文章的受众,有可能就是我自己产品的用户。并且,有了文章的背书,当用户对我有更多了解和信任后,也就更愿意尝试我的产品。

2) 贴贴板到 iPaste 的蜕变

2.0) 那些年,我也曾青涩

对于名字,当初也是纠结了很久才定的「贴贴板」(英文 Daily Clipboard)现在来看,中文名还好,英文名就太差了些,且和中文名没有关联。当时,我已经开发了 iPic,想维持一个「i」系列,就直接改为「iPaste」了。

再来看看当年贴贴板的 Logo(左侧):

真有种不忍直视的感觉 😅

目前的 Logo(右侧),是自己设计的。基本是参考系统圆形 Logo,如 iBooks、App Store;其中的 P,和 iPic Logo 中的 P 一样;背景的深绿色,是参考系统 Time Machine,想借其稳定的意味。

其实,改名、改 Logo 的影响还是非常大的。比如,之前所有在媒体沉淀的报道,全都无效了,需要从 0 开始积累影响力。所以,大家在给产品起名、设计 Logo 时,一定要慎重。定好了,就要坚持。

对于独立开发者朋友,我有个小建议:保留自己程序的历史版本。当然,我知道你肯定已经用了 Git;我是说,保留可以直接运行的版本(你确定,20 年后,你还有能力将代码编译为程序 😂)就像老照片一样,多年以后,重新运行一下自己当年还懵懂时写下程序,看那交互、那颜色、那不经意的跳转,就像看老照片一样,会有别样的情愫

2.1) 付费下载 -> 内购

最开始,iPaste 的模式是付费以后才能下载使用。

采用这一方式的唯一原因:实现简单。或者说,代码上什么都不用做,无需区分免费版和付费后的功能限制,无需处理复杂的 In-App Purchase 集成。

不过,这一方式的缺点也很明确:限制潜在用户尝试 iPaste. 这部分可以在 Mac 开发的神秘面纱:后娘养的嫡长子 里有介绍详细的介绍。

后来,iPaste 将付费模式调整为免费 + 内购。从效果上看,确实明显增加了用户数量,用户付费也有所增加。所以,如果你打算开发个产品,个人建议采用免费 + 内购的方式。其中,可以试试我开源的 IAPHelper,可以很方便地集成 In-App Purchase. 另外,内购也可以试试订阅。虽说很多朋友对于订阅还很抗拒,不过,还是有用户能接受,不妨考虑一下。

换付费模式,其实是挺麻烦的事。比如,最开始已经付费购买的用户,总不能让其再购买一次、或者不能更新吧?要做到这一点,就要识别出之前上架 MAS 的版本,以及用户是否从 MAS 下载的 iPaste,对于条件都满足,则自动开通高级功能。如何识别?主要是从 MAS 更新 Receipt 并解析其中的内容。

3) iPaste 的现在与将来

3.0) 工具型产品的困境

我查了下,上个版本的是 iPaste,是在去掉 9 月 26 日发布的,几乎都快一年了。

为什么这么久都不出新版?

一方面,是我在忙 iPicKlib 等其他产品。另一方面,更重要的,是我 没想好该怎么改进

工具型产品很容易陷入这样的困境:一方面,会遇到用户增长迟缓的情况;另一方面,会有用户表达「加了这个功能,我就买」这样的意愿。于是,很容易抗不住压力,加了某个功能。且不说当初的用户是否真的购买,长此以往,产品的功能越来越多,很容易变得越来越复杂、越来越不好用。用户增长变得更缓慢,甚至流失,陷入 死循环

Word 就是个典型的例子,就像我们熟悉的那句话:99% 的人用了 Word 不到 1% 的功能。当然,Word 依然是现在的工业标准。但与此同时,以 Markdown 为代表的文本轻量型编辑工具,蚕食了大量原本属于 Word 的份额。

其实,很多工具型产品变坏、变难用,很大程度是因为营收的压力。因为工具型产品本身是极难赢利的,而不赢利又无法养活团队,不现实。于是,为了赢利,产品团队不得不加些社交、内容等元素,想办法增加用户粘性和互动,进而希望带来更多转化和商业可能性;但通常,事与愿违。

怎么破呢?简单:别指望用工具赚大钱。不要让团队过于膨胀,以减少成本。出于这一点,独立开发者、小团队,很适合做工具型产品,因为营收压力小,一人吃饱、全公司不饿,不至于因此让产品畸变。

3.1) iPaste 该如何突围

说回 iPaste,它的 核心功能就是一句话:记住用户曾经复制的内容,然后粘贴。对于核心功能,iPaste 已经实现的很好了,甚至可以钉住剪贴板历史,进而使用固定的快捷键粘贴,大大提高效率。

那在此基础上,还能如何改进呢?经过一年的潜意识思考和自己的实际需求,我加了 2 个功能:

  • 编辑及管理剪贴板历史
  • 增加 Pin 历史分组

看个操作视频就明白了:

主要对应于我自己的几个使用场景:

快速插入 Emoji 表情

  • macOS 系统自带的Ctrl + Command + Space 呼出 Emoji 和符号键盘,问题在于:效率不高:系统列出了无数的表情,而我自己常用的就那么几个。虽说有历史、收藏夹分组,但每次都要手动切换,还要移动鼠标,麻烦。
  • macOS 中运行的其它程序,如微信、Telegram、Skype 等等,每家 Emoji 表情的 排列不一致、长得不一样、交互也不一样。每次要在不同的排列中找,有点痛苦。
  • 在 iPaste 增加了此功能后,我可以按依次按 Shift + Command + VCommand + AA/B/C,快速输入指定的 Emoji 表情。全程使用固定的快捷键、无需鼠标,高效、舒服

快速插入一些特殊字符

  • 比如,macOS 快捷键中常用的 等特殊字符,在回复用户邮件时,时不时会用到,几乎每次都要到 Google 搜索,然后再粘贴过去。
  • 现在,我会创建一个专业的 Pin 分组,用于输入这些特殊字符。

添加客服常用语

  • 比如,我经常我回复用户的问题。而这些问题中,很多是重复的,回复也是类似的。有了 Pin 分组功能,我可以为每个产品添加常用的回复语,用于在邮件中快速添加。

添加常用命令

  • 比如 gc master; git merge dev; gc dev; 用于切至 Git 主分支、合并、切回 dev 分支。
  • 有时,需要对命令做简单调整,在之前的版本中,就有点痛苦。因为我需要多次 Pin/Unpin,才能让新 Pin 住的历史,并使用原来的快捷键。说起来有点绕,用过 iPaste 之前版本的朋友,应该明白我在说什么。

可以看出,做出这个更新,主要还是满足我自己的实际需求。如果恰好你也有这种痒点,欢迎试试新版 iPaste. 顺便做个硬广:含此功能的 新版 iPaste 今天刚刚上架,高级版内购限时半价,需要的朋友不要错过。

3.2) iPaste 还能玩出什么花

在 App Store 搜索「剪贴板」,会得到一堆应用,这是个充分竞争的领域。那么,iPaste 该如何定位、又能玩出什么花样?

首先,iPaste 的定位一直没变:简洁高效的剪贴板应用。

我知道,你肯定觉得「简洁高效」这话实在是被用滥了,说了跟没说一样。但我真的是这么做的。

  • iPaste 的交互基于菜单,已经不可能更简洁了。
  • iPaste 所有关键操作都支持快捷键,全程不需要使用鼠标或触摸板。

在坚守 「简洁高效」 这个定位和底线后,iPaste 会在继续在易用性和效率上改进。比如,很多朋友希望能记录更多的剪贴板历史(虽然我目前依然觉得意义不大),而要在众多历史中找到需要的,搜索便成为必然。于是,入口就是个问题,我打算 在 Spotlight 搜索中集成 iPaste 的搜索。据我所知,目前同类应用中尚未出现此功能,iPaste 算是首创吧。恩,有了点子公布出来,省得后来者反而说我模仿抄袭。

另外,打算支持 CloudKit,并开发 iPaste for iOS. 恩,我知道,在 iOS 领域,剪贴板应用同样竞争非常充分,且有 Pin 这样的明星产品。不过,还是有事情可做的。比如,目前我在 macOS 上设计图片后,要发到朋友圈,需要先通过微信等方式先将图片及文字中转到手机,然后再发,很是麻烦。要是 iPaste for iOS 能做到 macOS 端复制、iOS 端一键发送,多好。

再有,基于 iPaste 还有个衍生产品:iTips,主要是 个人碎片化信息的管理,如公司发票抬头,追了哪些美剧、分别看到第几集,等等。目前还没想到具体的形态,暂不展开介绍。

尾巴

连续写了几篇长文,感觉要被掏空了。下周都不知道要写什么了,总不能继续写回忆录吧?😂

没办法,只能继续逼自己多输入,保证每周都有干货,晾晒在「自在开发」公众号。