2015 年底,我離開了這輩子最后一家公司,成為一名自由職業(yè)者。而 iPaste,是我獨立開發(fā)的第一款 macOS 產(chǎn)品。
1.7 年過去了,在發(fā)布新版 iPaste 時,說說這款讓我不再青澀的作品。
----- 長文開始警戒線;不喜請繞行 -----

0) 起初,「貼貼板」并不算產(chǎn)品
如果現(xiàn)在做個新產(chǎn)品,事先一定會有充分的調(diào)研,比如用戶需求是否真實存在、市場容量、競品分析、技術(shù)可行性分析等等,然后才會立項。
之所以說不算產(chǎn)品,是因為當(dāng)初做「貼貼板」時,完全跳過了這些環(huán)節(jié),直接開始碼;更像是個練手的項目。怎么回事?主要是當(dāng)時剛剛出來自己單干,已經(jīng)至少 3 年沒寫代碼了,做什么領(lǐng)域的產(chǎn)品,都行,也都不行。在腦子一熱決定先做 macOS 時,腦子里第一個冒出來的就是貼貼板這個點子,因為自己平時太需要剪貼板增加工具這類產(chǎn)品了。
咦,你可能好奇,說好的是 iPaste,怎么變出個貼貼板?其實,這個產(chǎn)品就是以「貼貼板」這個名字問世的,并保持了最開始的大半年時間。2016 年 9 月底才更名為 iPaste;這是后話,后面再提。
這里衍伸出一個話題:做產(chǎn)品,是做自己需要的產(chǎn)品,還是做大眾需要的產(chǎn)品?當(dāng)然,如果這兩者重合,最好。如果不,建議起步時選擇自己需要的產(chǎn)品。最直接的好處是,你自己就知道產(chǎn)品應(yīng)該做成什么樣子,跳過了用戶調(diào)研的環(huán)節(jié),也不至于跑偏。
不過,這個方式有個很大的局限:通常,自己的需求有限,并且會是個小點子,不利于產(chǎn)品做大。而且,產(chǎn)品做大后,就不再是當(dāng)初自己想要的東西了,又變成了做大眾需求的產(chǎn)品。所以,根本上是 在做自己需求的產(chǎn)品的時候,摸過出做產(chǎn)品的路子,進(jìn)而推演到大眾需求。
這里引用在 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.
精準(zhǔn)的翻譯是:通常你需要的,別人也需要的;這些「別人」,沒有千萬、也有百萬,除非你是朵奇葩。
1) iPaste 奪走我的第 1 次,一次又一次
就是這么一個不算產(chǎn)品的產(chǎn)品,卻 讓我經(jīng)歷了無數(shù)的從 0 到 1:
- 第一次學(xué)習(xí) Swift
- 第一次學(xué)習(xí) macOS 開發(fā)
- 第一次給產(chǎn)品起名
- 第一次設(shè)計 Logo
- 第一次獨立完成一個產(chǎn)品
- 第一次審核被拒(以及 N 次)
- 第一次收到用戶付費(fèi)
- 第一次收到用戶反饋
- 第一次收到海外用戶反饋
- 第一次推廣
- 第一次付費(fèi)推廣
- 第一次開源代碼給別人用
- 第一次…
- …
1.0) Swift 與 macOS 開發(fā)
這部分在 Mac 開發(fā)的神秘面紗:后娘養(yǎng)的嫡長子 里有介紹,這里僅簡單的提及。
對于 iPaste 而言,核心的部分是系統(tǒng)剪貼板。也即,能夠記錄用戶曾經(jīng)復(fù)制的內(nèi)容,并且能 100% 準(zhǔn)確地還原。難就難在這 100%,因為用戶可能會在任意程序中、復(fù)制任意格式的數(shù)據(jù),如純文本、格式化文本、圖片、文件等等。
其實,我試了當(dāng)時的一些競品,包含非常知名的,并沒有做到這一點。比如,在復(fù)制并粘貼到 Numbers 時,會有一個單元格的錯位。產(chǎn)品深處這樣的問題,你在他們高大上的宣傳中自然是看不到的。而 貼貼板 就做到了這一點,所以當(dāng)時我還打出了「支持任意格式,不服來戰(zhàn)」的口號。核心的,就是將 NSPasteboardItem 中的數(shù)據(jù),存儲為 Data;在粘貼時,再將其寫回系統(tǒng)剪貼板。

不過,后來發(fā)現(xiàn),某些格式還是有問題的。比如,在 Sketch 中復(fù)制 svg 格式的圖片時,系統(tǒng)剪貼板中會產(chǎn)生 com.facebook.semaphore 這種類型。而對于這種類型 NSPasteboardItem.data(forType type: String) 這個函數(shù)會卡死 10 幾秒。我試了幾款知名的競品,也有兩樣的問題,看來確實是 macOS 系統(tǒng)有 Bug。不過,這種情況還是相當(dāng)少見,在我自己用 iPaste 的一年多時間里,僅遇到過這種情況(別試 iPaste 了,因為已經(jīng)改掉了;但是可以試試你手上的工具??)
再有,就是 macOS 沙盒的限制。具體到貼貼板,就是 如何將系統(tǒng)剪貼板中的內(nèi)容粘貼到當(dāng)前應(yīng)用。要做到這一點,有多種方式,速度最快的,是發(fā)送 Command + V 鍵盤指令,模擬用戶按下粘貼快捷鍵。不過,在沙盒模式下,這一方式直接不干活。

能在沙盒模式下干活的,就使用 Apple Script 來發(fā)送 Command + V??墒?,在上架 Mac App Store 時被拒。反觀所有已經(jīng)上架 Mac App Store 的同類應(yīng)用,都是讓用戶再從其官方下載一個所謂的插件、助手,基本都是安裝 Apple Script 來實現(xiàn)自動粘貼。最后,我也從了,用了類似的方式。
這里再 吐槽一下 macOS 沙盒模式,已經(jīng)裹足不前好幾年了。對于自動粘貼這樣的需求,不支持的理由無外乎是安全??墒牵@樣的不作為,直接導(dǎo)致用戶下載安裝一個自己不可能驗證安全的助手。在我看來,只是將安全的皮球踢給了用戶,撇清了自己的責(zé)任而已。
1.1) 獨立完成一個產(chǎn)品
一個產(chǎn)品完整的生命周期,所涉及的點是非常多的:產(chǎn)品定義、市場研究、競品分析、設(shè)計、開發(fā)、測試、上架、運(yùn)營、推廣、客服等等。要獨自做好這些事,確實是很大的挑戰(zhàn)。
當(dāng)然,由于精力和能力有限,我也不可能做好所有的方面,目前主要的精力是開發(fā)和推廣。對于做不好的地方,可以:
- 簡單做一下,將就著;
- 花時間學(xué)習(xí),做好;
- 請人幫忙做。
不同的事,處理的方式不同。
- 比如 Logo 的設(shè)計,我目前傾向于請人做。比如 Klib 的圖標(biāo),是由 Allen 幫忙設(shè)計的。
- 比如程序里的圖標(biāo),我基本上是在網(wǎng)上免費(fèi)圖標(biāo)的基礎(chǔ)上,簡單修改下。
- 比如推廣,很難外包給別人,只能自己硬著頭皮上。
其實,我還是挺愿意花時間折騰自己目前不擅長的事。不過,畢竟時間有限,還是要 把時間用在自己的長處,把短處外包給更專業(yè)的人完成。
另外,自己一個人做也是有好處的。比如,不需要與人商量,就減少了很多溝通成本。尤其是各方意見不一致時,要達(dá)到最終結(jié)論,通常需要消耗大量的時間,甚至是返工并帶來額外開發(fā)成本。而一個人,則沒有這樣的問題。
在實際做事的過程中,也養(yǎng)成了自己的習(xí)慣,比如:
- 使用 Omni Focus 管理項目要做的事、測試用例
- 在開發(fā)功能時,就完善所有單元測試、測試用例
- 數(shù)據(jù)結(jié)構(gòu)、UI、業(yè)務(wù)邏輯的開發(fā)步驟
- 使用虛擬機(jī)來測試操作系統(tǒng)的不同版本、不同語言

建立這些習(xí)慣的過程是痛苦的,因為要摸索所有的可能性,摒棄不適合的,最終形成適合自己的方式。而一旦建立,會有很大的收益。在下次做類似的事情時,好的習(xí)慣會大大提高效率,避免走大的彎路。
1.2) 第一次出門吆喝
自己辛苦做出來的產(chǎn)品,自然是希望更多人用;能賺更多錢,當(dāng)然更好??墒牵?strong>酒香也怕巷子深」,尤其現(xiàn)在大家的注意力被各種事情分散著,要在這樣的前提下,讓更多需要的朋友知道自己的產(chǎn)品,是個很大的挑戰(zhàn)。
要增加產(chǎn)品的爆光,最直接的就是在媒體上報道?;剡^頭來看,從時間和效果上看,當(dāng)時這幾個媒體還是不錯的:
-
V2EX
- 這里聚集了很多愿意嘗鮮的極客,他們愿意嘗試那些新鮮出爐的粉嫩產(chǎn)品,并予以自己的肯定和鼓勵。
-
36kr Next
- 現(xiàn)在,這個產(chǎn)品基于處于半死不活狀態(tài),我感覺。
- 當(dāng)年,在 Next 發(fā)布貼貼板,還是帶來了不少的流量。
-
Mac 玩兒法
- 自己認(rèn)真接觸的第一個自媒體,是 Frank 一個人做的,佩服。
而這些,全部是國內(nèi)的媒體。如何在海外推廣?很是頭大。其中,我嘗試了 平生第 1 次付費(fèi)推廣,是在 Two Dollar Tuesday,當(dāng)時,其官方的規(guī)則是:
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.
精準(zhǔn)翻譯過來,就是:
- 我將應(yīng)用降價為 $1.99
- 周二的收入,對方提成 30%
- 對方至少收 100 份的費(fèi)用,即 $70,最多收 $1000
實際的效果,在這兩天僅售出 92 份、$126,除去先前支付的 $70,還剩 $56,相當(dāng)于每份 $56 / 92 = $0.6,白菜價。
于是,我之后再沒試過付費(fèi)推廣…
需要注意的是,媒體的效果主要有 2 方面:
-
突擊爆光
- 尤其在產(chǎn)品發(fā)布的時候,多家媒體同時爆光,甚至?xí)?霸屏 的效果。
- 比如,當(dāng)用戶在微博上看到 iPaste 的報道,可能跳過了??扇绻又衷谏贁?shù)派看到、在即刻訂閱上看到,就肯定會加深印象?;蛟S會生出興趣,嘗試一番。
-
為之后的搜索做鋪墊
- 我們在需要某類產(chǎn)品時,除了向周圍的高手求教,也可能自己去互聯(lián)網(wǎng)搜索。而這些媒體的報道,則會成為被搜索到的基礎(chǔ)。尤其是 權(quán)威媒體的報道,會有更高的搜索權(quán)重。
- 這里說一個小技巧:自己在寫文章時,要「面向搜索引擎」,而不僅僅是標(biāo)題黨。比如,「夜深了,熄燈了,老公竟然不理我,還在玩這款游戲?!」這樣的標(biāo)題,其實對于搜索引擎并不友好。對于標(biāo)題這樣重要的因素,不包含產(chǎn)品的名字,是不能接受的。
不過,媒體資源畢竟是有限的,你總不可能天天被報道吧?在更長的時間范圍內(nèi),都要靠用戶的自發(fā)傳播,和自己的影響力。
對于口碑傳播,當(dāng)然首先要靠產(chǎn)品的硬實力,畢竟首先產(chǎn)品要好,用戶才愿意消耗自己品牌價值,去推薦你的產(chǎn)品。當(dāng)然,這其中也存在一定程度的可操作性,比如在程序角度誘導(dǎo)用戶分享,以及分享送 Pro 之類的活動。
而 對于自己的影響力,就需要長期建設(shè)了。比如,我最近強(qiáng)迫自己每周二早 8 點在自己的「自在開發(fā)」公眾號中寫篇技術(shù)長文(包括本篇),也在自己的博客、少數(shù)派、掘金、簡書等全媒體發(fā)布。這些文章的受眾,有可能就是我自己產(chǎn)品的用戶。并且,有了文章的背書,當(dāng)用戶對我有更多了解和信任后,也就更愿意嘗試我的產(chǎn)品。
2) 貼貼板到 iPaste 的蛻變
2.0) 那些年,我也曾青澀
對于名字,當(dāng)初也是糾結(jié)了很久才定的「貼貼板」(英文 Daily Clipboard)現(xiàn)在來看,中文名還好,英文名就太差了些,且和中文名沒有關(guān)聯(lián)。當(dāng)時,我已經(jīng)開發(fā)了 iPic,想維持一個「i」系列,就直接改為「iPaste」了。
再來看看當(dāng)年貼貼板的 Logo(左側(cè)):

真有種不忍直視的感覺 ??
目前的 Logo(右側(cè)),是自己設(shè)計的。基本是參考系統(tǒng)圓形 Logo,如 iBooks、App Store;其中的 P,和 iPic Logo 中的 P 一樣;背景的深綠色,是參考系統(tǒng) Time Machine,想借其穩(wěn)定的意味。
其實,改名、改 Logo 的影響還是非常大的。比如,之前所有在媒體沉淀的報道,全都無效了,需要從 0 開始積累影響力。所以,大家在給產(chǎn)品起名、設(shè)計 Logo 時,一定要慎重。定好了,就要堅持。
對于獨立開發(fā)者朋友,我有個小建議:保留自己程序的歷史版本。當(dāng)然,我知道你肯定已經(jīng)用了 Git;我是說,保留可以直接運(yùn)行的版本(你確定,20 年后,你還有能力將代碼編譯為程序 ??)就像老照片一樣,多年以后,重新運(yùn)行一下自己當(dāng)年還懵懂時寫下程序,看那交互、那顏色、那不經(jīng)意的跳轉(zhuǎn),就像看老照片一樣,會有別樣的情愫。

2.1) 付費(fèi)下載 -> 內(nèi)購
最開始,iPaste 的模式是付費(fèi)以后才能下載使用。
采用這一方式的唯一原因:實現(xiàn)簡單?;蛘哒f,代碼上什么都不用做,無需區(qū)分免費(fèi)版和付費(fèi)后的功能限制,無需處理復(fù)雜的 In-App Purchase 集成。
不過,這一方式的缺點也很明確:限制潛在用戶嘗試 iPaste. 這部分可以在 Mac 開發(fā)的神秘面紗:后娘養(yǎng)的嫡長子 里有介紹詳細(xì)的介紹。
后來,iPaste 將付費(fèi)模式調(diào)整為免費(fèi) + 內(nèi)購。從效果上看,確實明顯增加了用戶數(shù)量,用戶付費(fèi)也有所增加。所以,如果你打算開發(fā)個產(chǎn)品,個人建議采用免費(fèi) + 內(nèi)購的方式。其中,可以試試我開源的 IAPHelper,可以很方便地集成 In-App Purchase. 另外,內(nèi)購也可以試試訂閱。雖說很多朋友對于訂閱還很抗拒,不過,還是有用戶能接受,不妨考慮一下。
換付費(fèi)模式,其實是挺麻煩的事。比如,最開始已經(jīng)付費(fèi)購買的用戶,總不能讓其再購買一次、或者不能更新吧?要做到這一點,就要識別出之前上架 MAS 的版本,以及用戶是否從 MAS 下載的 iPaste,對于條件都滿足,則自動開通高級功能。如何識別?主要是從 MAS 更新 Receipt 并解析其中的內(nèi)容。
3) iPaste 的現(xiàn)在與將來
3.0) 工具型產(chǎn)品的困境
我查了下,上個版本的是 iPaste,是在去掉 9 月 26 日發(fā)布的,幾乎都快一年了。
為什么這么久都不出新版?
一方面,是我在忙 iPic、Klib 等其他產(chǎn)品。另一方面,更重要的,是我 沒想好該怎么改進(jìn)。
工具型產(chǎn)品很容易陷入這樣的困境:一方面,會遇到用戶增長遲緩的情況;另一方面,會有用戶表達(dá)「加了這個功能,我就買」這樣的意愿。于是,很容易抗不住壓力,加了某個功能。且不說當(dāng)初的用戶是否真的購買,長此以往,產(chǎn)品的功能越來越多,很容易變得越來越復(fù)雜、越來越不好用。用戶增長變得更緩慢,甚至流失,陷入 死循環(huán)。
Word 就是個典型的例子,就像我們熟悉的那句話:99% 的人用了 Word 不到 1% 的功能。當(dāng)然,Word 依然是現(xiàn)在的工業(yè)標(biāo)準(zhǔn)。但與此同時,以 Markdown 為代表的文本輕量型編輯工具,蠶食了大量原本屬于 Word 的份額。

其實,很多工具型產(chǎn)品變壞、變難用,很大程度是因為營收的壓力。因為工具型產(chǎn)品本身是極難贏利的,而不贏利又無法養(yǎng)活團(tuán)隊,不現(xiàn)實。于是,為了贏利,產(chǎn)品團(tuán)隊不得不加些社交、內(nèi)容等元素,想辦法增加用戶粘性和互動,進(jìn)而希望帶來更多轉(zhuǎn)化和商業(yè)可能性;但通常,事與愿違。
怎么破呢?簡單:別指望用工具賺大錢。不要讓團(tuán)隊過于膨脹,以減少成本。出于這一點,獨立開發(fā)者、小團(tuán)隊,很適合做工具型產(chǎn)品,因為營收壓力小,一人吃飽、全公司不餓,不至于因此讓產(chǎn)品畸變。
3.1) iPaste 該如何突圍
說回 iPaste,它的 核心功能就是一句話:記住用戶曾經(jīng)復(fù)制的內(nèi)容,然后粘貼。對于核心功能,iPaste 已經(jīng)實現(xiàn)的很好了,甚至可以釘住剪貼板歷史,進(jìn)而使用固定的快捷鍵粘貼,大大提高效率。
那在此基礎(chǔ)上,還能如何改進(jìn)呢?經(jīng)過一年的潛意識思考和自己的實際需求,我加了 2 個功能:
- 編輯及管理剪貼板歷史
- 增加 Pin 歷史分組
看個操作視頻就明白了:

主要對應(yīng)于我自己的幾個使用場景:
快速插入 Emoji 表情

-
macOS 系統(tǒng)自帶的 是
Ctrl + Command + Space呼出 Emoji 和符號鍵盤,問題在于:效率不高:系統(tǒng)列出了無數(shù)的表情,而我自己常用的就那么幾個。雖說有歷史、收藏夾分組,但每次都要手動切換,還要移動鼠標(biāo),麻煩。 - macOS 中運(yùn)行的其它程序,如微信、Telegram、Skype 等等,每家 Emoji 表情的 排列不一致、長得不一樣、交互也不一樣。每次要在不同的排列中找,有點痛苦。
- 在 iPaste 增加了此功能后,我可以按依次按
Shift + Command + V、Command + A、A/B/C,快速輸入指定的 Emoji 表情。全程使用固定的快捷鍵、無需鼠標(biāo),高效、舒服。
快速插入一些特殊字符

- 比如,macOS 快捷鍵中常用的
?、?、?、?等特殊字符,在回復(fù)用戶郵件時,時不時會用到,幾乎每次都要到 Google 搜索,然后再粘貼過去。 - 現(xiàn)在,我會創(chuàng)建一個專業(yè)的 Pin 分組,用于輸入這些特殊字符。
添加客服常用語
- 比如,我經(jīng)常我回復(fù)用戶的問題。而這些問題中,很多是重復(fù)的,回復(fù)也是類似的。有了 Pin 分組功能,我可以為每個產(chǎn)品添加常用的回復(fù)語,用于在郵件中快速添加。
添加常用命令
- 比如
gc master; git merge dev; gc dev;用于切至 Git 主分支、合并、切回 dev 分支。 - 有時,需要對命令做簡單調(diào)整,在之前的版本中,就有點痛苦。因為我需要多次 Pin/Unpin,才能讓新 Pin 住的歷史,并使用原來的快捷鍵。說起來有點繞,用過 iPaste 之前版本的朋友,應(yīng)該明白我在說什么。
可以看出,做出這個更新,主要還是滿足我自己的實際需求。如果恰好你也有這種癢點,歡迎試試新版 iPaste. 順便做個硬廣:含此功能的 新版 iPaste 今天剛剛上架,高級版內(nèi)購限時半價,需要的朋友不要錯過。
3.2) iPaste 還能玩出什么花
在 App Store 搜索「剪貼板」,會得到一堆應(yīng)用,這是個充分競爭的領(lǐng)域。那么,iPaste 該如何定位、又能玩出什么花樣?
首先,iPaste 的定位一直沒變:簡潔高效的剪貼板應(yīng)用。
我知道,你肯定覺得「簡潔高效」這話實在是被用濫了,說了跟沒說一樣。但我真的是這么做的。
- iPaste 的交互基于菜單,已經(jīng)不可能更簡潔了。
- iPaste 所有關(guān)鍵操作都支持快捷鍵,全程不需要使用鼠標(biāo)或觸摸板。

在堅守 「簡潔高效」 這個定位和底線后,iPaste 會在繼續(xù)在易用性和效率上改進(jìn)。比如,很多朋友希望能記錄更多的剪貼板歷史(雖然我目前依然覺得意義不大),而要在眾多歷史中找到需要的,搜索便成為必然。于是,入口就是個問題,我打算 在 Spotlight 搜索中集成 iPaste 的搜索。據(jù)我所知,目前同類應(yīng)用中尚未出現(xiàn)此功能,iPaste 算是首創(chuàng)吧。恩,有了點子公布出來,省得后來者反而說我模仿抄襲。
另外,打算支持 CloudKit,并開發(fā) iPaste for iOS. 恩,我知道,在 iOS 領(lǐng)域,剪貼板應(yīng)用同樣競爭非常充分,且有 Pin 這樣的明星產(chǎn)品。不過,還是有事情可做的。比如,目前我在 macOS 上設(shè)計圖片后,要發(fā)到朋友圈,需要先通過微信等方式先將圖片及文字中轉(zhuǎn)到手機(jī),然后再發(fā),很是麻煩。要是 iPaste for iOS 能做到 macOS 端復(fù)制、iOS 端一鍵發(fā)送,多好。
再有,基于 iPaste 還有個衍生產(chǎn)品:iTips,主要是 個人碎片化信息的管理,如公司發(fā)票抬頭,追了哪些美劇、分別看到第幾集,等等。目前還沒想到具體的形態(tài),暫不展開介紹。
尾巴
連續(xù)寫了幾篇長文,感覺要被掏空了。下周都不知道要寫什么了,總不能繼續(xù)寫回憶錄吧???
沒辦法,只能繼續(xù)逼自己多輸入,保證每周都有干貨,晾曬在「自在開發(fā)」公眾號。