关于「幕后」
我们每天会接触大量的软件、硬件,但是多数时间下,都只是以固有的「使用者」视觉去体验和评判,快节奏的模式让我们没时间体会太多背后的理念。「幕后」栏目 因此而生,我们会不定期邀请一些制作者,讲述他们在产品开发 / 制作过程中的点滴。
近日,苹果公布了 2016 年度精选应用和游戏,其中不乏熟悉的面孔。我们熟悉的剪贴板效率应用 Pin 也被收入到年度十佳 App 行列中,这款 App 提升了在 iOS 和 macOS 上关于剪贴板的使用体验,同时提供了更多有趣的玩法,分词、搜索、抓图、快速启动……它在 Widget 那有限的空间下提供了无限的可能,在解决用户痛点的同时获得了一致好评。
就此机会我们邀请到 Pin 的开发者钟颖,来分享一下他在开发 Pin 时背后的故事。
入选 App Store 年度十佳应用
独立制作能在遍地大作的 App Store 有一席之地很不容易,所以最主要的感受是兴奋和感激。
π:介绍一下你自己
我叫 钟颖(Cyan),是一名 iOS 开发者,有时候也写点 macOS 的小应用,目前主要的独立作品有 Pin 和 小历。常出没于 GitHub / 知乎 / 微博 等社区。
π:Pin 入选了今年的 App Store 年度十佳应用榜单(中国区),作为开发者的你有何感受?
觉得非常幸运,独立制作能在遍地大作的 App Store 有一席之地很不容易,所以最主要的感受是兴奋和感激。当然也有一点点压力,随着应用不断的被用户了解,不足之处也会暴露出来,还应该继续努力。
π:当初是怎样想起来做 Pin 这个 App 的?
最开始是用了 Clips 这个老前辈。Clips 的更新频率很低,并且在交互上自己不是特别喜欢,所以就想着自己写一个。
π:Pin 不仅仅是一个剪贴板 App,其中还有许多其他的小功能,你是如何挖掘这些需求的?
Pin 的雏形是一个「剪贴板记录工具 + 基于剪贴板的启动器」,这是 Pin 初始版本的全部功能。第二个出现在 Pin 里面的大功能是分词,来源于对大段文本切分的需求,之后加入了在通知中心浏览网页的功能。
再后来逐步的出现了一些基于文本的其他扩展功能,类似于从文本中抓取图片,将文本输出成图片等等。我个人的核心观点是:Pin 是一个基于文本的快捷工具,你能利用剪贴板中的文本做一些事情。挖掘需求主要来自于自身的感受和用户的反馈,Pin 有不少功能是从用户建议中发展来的,这里要感谢用户的支持。
Pin 的分词功能
π:在中国区之外的 Pin 是怎样的情况?用户数量和反馈如何?
目前 Pin 的绝大部分用户都来自于中国,即便是美区的反馈也有些是中国的朋友。虽然 Pin 做了英文的本地化,但是不得不承认这只是较为初级的适配,并不能对国外用户提供更有价值的适配,例如 Pin 的分享主要针对微信和 QQ 这种国内流量最大的社交软件。可能这也是一个可以提高的点吧,如果日后精力允许的话。
π:从你之前的作品可以看出,你是非常善于使用系统提供的接口来创造出将其可用性和功能性更大化的产品。在 iOS 10 中,Apple 又更新(增加)了许多新 API 和 SDK,有没有打算用这些新特性再做些有意思的东西?
iOS 10 的 API 里对 Pin 而言比较有利的是:更强的推送通知和 iMessage 扩展。推送通知方面 Pin 在之后会有改进,利用更好的通知来呈现剪贴板的内容。iMessage 扩展这个我之前出过一个 demo,效果不是很理想,考虑到 iMessage 在国内的使用情况,当时就没有把这种抓眼球的功能作为主要的着力点。
Universal Clipboard 和数据传输
我对 Universal Clipboard 这个产品表示很遗憾,这个产品是「优秀的想法被糟糕的实现给毁了」的典型。
π:今年 WWDC 大会中随着 macOS 的发布增加了 Universal Clipboard 功能一度被认为杀死了众多第三方跨平台剪贴板应用,但在使用中体验并不理想,卡顿问题非常严重,这是什么原因导致的?你认为 Universal Clipboard 对你开发 Pin 的影响大吗?
我对 Universal Clipboard 这个产品表示很遗憾,这个产品是「优秀的想法被糟糕的实现给毁了」的典型。一开始我也认为它会杀死第三方剪贴板应用,后来我发现他真的「杀死」了,不过是以一种很奇怪的方式:Universal Clipboard 几乎毁掉了 iOS 和 macOS 的剪贴板。
Universal Clipboard 的效果十分糟糕,他不只会让界面卡顿,有时候还会让剪贴板里面的内容变得莫名其妙,比如被清空。究其原因有两个方面,首先在同步剪贴板方面,苹果选择了不加区分的让 iOS 和 macOS 所有的剪贴板都会同步,这个其实不是很符合真实场景的。另外同步的策略很有问题,每次只要去读取剪贴板(包括第三方 app),就会去尝试同步,并且这个同步会卡住界面,如果网络环境不理想的话,这个体验非常糟糕而且稳定性很难保证。
Universal Clipboard 后续如果改进的话,对 Pin 来说其实是一个非常好的事情,我不再认为 Universal Clipboard 会从产品层面毁掉 Pin。举个最简单的例子,从 macOS 的浏览器上复制 GIF 链接,直接打开 Pin 抓图,即可得到 GIF 图片。所以我唯一希望的是 Universal Clipboard 可以在用户体验上面得到提高。
π:由于上述 Universal Clipboard 的缺陷,是不是可以说又给了 Pin 更多发展的空间?接下来 Pin 在 iOS 和 macOS 上会不会有比较大的变化?
综合上面的描述,我认为 Universal Clipboard 是可以作为一个增强 Pin 的产品而存在的,有很多跨端的事情可以做,而同步则完全由 Universal Clipboard 搞定(如果它够稳定的话)。
π:曾经使用过很多跨平台剪贴板工具,它们在 iOS 和 macOS 设备的通讯上通常采用 Wi-Fi、数据以及蓝牙,而 Pin 是使用 iCloud 进行数据传输,这些传输方式上各有什么优劣?
iCloud 的优势是不用同 Wi-Fi 网络,同时在开发方面成本也比较低,劣势在国内就非常明显了,稳定性方面是个坑。
让支持 VoiceOver 成为一种习惯
唯一要花心思的就是要多和视障用户沟通,知道他们需要的。借用 Accessibility 开发文档里面的一句话就是:It’s the right thing to do。
π:在前段时间,一名视障用户向你反馈了使用 iOS 辅助功能 VoiceOver 来操作 Pin 中遇到的部分兼容问题,对此你也做出了积极的回应和修复。在对 Accessibility 支持的开发中,都遇到了哪些问题?
Accessibility 是一个很大的话题,这里只能简单提一下。一开始开发 Accessibility 其实很不懂这些东西要怎么搞,因为要去尝试理解视力障碍用户的行为习惯其实不是一件很容易的事情。比如说一开始我觉得提示语太多他们可能会受不了,但有朋友也跟我说,他们很习惯把语速调到最高然后可以很快地听完。这是一种习惯差异,需要经过很多沟通和测试才能逐步提高。
视障用户对 Pin 在 VoiceOver 支持上的反馈
π:由于对这部分用户使用情况不太了解和缺少对其的关注,国内应用对 Accessibility 的支持率还处于你个比较低的水平,你有什么想对广大开发者说的?
做 Accessibility 能提高用户的适用范围,并且开发起来成本并不是很高,苹果提供的 SDK 相当完善。唯一要花心思的就是要多和视障用户沟通,知道他们需要的。借用 Accessibility 开发文档里面的一句话就是:It's the right thing to do。
最后
π:随今年锤子手机 M1 发布的 Samrtian OS 3.0 系统中推出的 Big Bang (大爆炸)和 Pin 的分词操作功能高度雷同,老罗表示这是坐在马桶上想出来的,对此你怎么看?
那段时间经常有人给我看相关的文章,老罗在文中说上帝给他推送了这个灵感,我觉得这很有趣,我们大概碰到了同一个上帝。
π:独立开发和在团队中开发分别是怎样的体验?你更喜欢那种?
独立开发比较自由,自己想做什么做什么,没有明确的计划,没有明确的目标,这种自在的感觉是我很喜欢的。团队开发对技术上的成长比较大,能够在协作中学到一些东西。难以抉择哪个更喜欢,各有优劣吧。
π:分享几个 Pin 有趣的玩法(用法)吧。
- 我个人最喜欢的用法是,选择文字之后通过 Share Sheet 的方式打开 Pin,这里可以直接搜索选中文字的结果,会内置一个 Safari 浏览器,不用离开当前阅读的内容;
- 其次,通过 Universal Clipboard 同步 GIF 也是一个不错的用法,因为默认状况下 Universal Clipboard 同步的 GIF 会变成静态的。你可以通过 Mac 浏览器上复制图片链接,然后打开 Pin 的抓图来同步 GIF;
- 如果你需要搜索短信或者微信中的某个词,只需要复制整块,然后下拉通知中心点分词按钮,接下来选中你的词块就行了。你也可以在设置中把默认点击行为改成「选中词块」;
- 可以试试 Pin 提供的图文混排功能,将一大段文本导出成图片,还可以插图,十分简洁的排版可能会是你想要的;
- 将保存备忘录/发微博/发 Twitter 等动作添加到通知中心,然后直接在通知中心完成这些事吧,所需要做的仅仅是点击动作,文字会被剪贴板填好,当然也是可以通过键盘输入的(iOS 10 以上)。
(文末栏目图来自 Business vector designed by Akdesign)