从概念到产品
定义你的应用(Define Your App)
应用的定义是对应用主要功能及目标用户简明而具体的描述。
尽可能在应用开发的早期创建应用的定义,这可以帮助你将你的想法和应用的功能清单转换为用户真正需要的、条理清晰的产品。在应用开发的过程中,通过定义来思考应用的某些功能和行为是否合理。你可以根据以下几个步骤来创建一个可靠的应用定义。
列出所有你认为用户可能喜欢的功能
进行头脑风暴,与此同时你需要列出所有与产品中心有关的任务。不用担心清单太长,在之后的步骤中会对此清单进行删减。
假设你一开始的想法是开发一个帮助人们购买食品杂货的应用,那么你也许会思考,用户在执行这项活动的过程有可能涉及到哪些相关的任务,这些任务或许就能够转换为用户可能感兴趣的潜在功能。例如:
- 创建购物清单
- 查找食谱
- 比较价格
- 定位商店
- 注释食谱
- 查找可使用的优惠劵
- 查看烹饪教程
- 探索不同的烹调方法
- 寻找某些食材的替代物
定位目标用户
现在你需要清楚地将使用你应用的用户与其他iOS应用的用户区分开来,确定在应用使用情境下,什么是对你的用户最重要的。比如,在食品杂货应用例子中,你可能需要询问你的用户以下问题:
- 倾向于在家里做饭,还是更喜欢购买现成的食物
- 倾向于在购物时使用优惠券,还是认为优惠券没多大价值
- 倾向于寻找特别的食材,还是使用基本食材
- 倾向于严格按照食谱做菜,还是只把食谱当做灵感来源
- 倾向于少量多次购买食材,还是一次性购买大量食材
- 倾向于在清单上记录各种类别的条目,还是只在清单上记录回家路上需要购买的几样物品
- 倾向于坚持使用固定的品牌,还是会使用方便的替代品
- 倾向于按照惯例来购买一些物品,还是会按照食谱来购买
思考过这些问题之后,你会得出三个用以描述目标用户的特征:用户喜欢尝试不同的食谱,用户通常处于匆忙状态,用户一般情况下比较节俭。
根据用户定位过滤功能清单
如果在确定了一些用户特征后,你最终只得到了几个主要功能,那么你就已经步入了正轨:好的 iOS 应用就应该聚焦在帮助用户解决核心问题上。
例如,回过头来思考第一步所罗列出的功能清单,即使这些功能在你看来都是有用的,但它们也不可能全都被在第二步定义的目标用户认可。
当你站在目标用户的角度,以他们的使用情境来检查功能清单时,可以很容易地判断你的应用应该聚焦在这三项主要功能:创建清单,获得并使用优惠劵,获得食谱。
到这一步,你就可以给出应用定义了,总结应用为谁而设计、用来做什么的。比如这一句适用于食品杂货购买应用的定义:
“为热爱烹饪且节俭的用户订制的创建购物清单工具。”
其他
在整个开发过程,你需要反复通过应用定义来检查应用的功能、控件、措辞是否合理。例如:
当你想要新增一个功能时,询问自己,这个功能对应用的主要任务和目标用户是否非常重要。如果不是,放弃这个功能,它也许会是另外一个应用的主要功能。例如,你已经确定了你的用户兴趣在于别出心裁的烹饪方法,那么就不需要再增加一个功能来着重展示盒装蛋糕和现成的食物。
当你考虑用户界面的视觉和交互时,询问自己,你的用户更喜欢简单的、流线型的风格,还是喜欢有明显主题的风格。在设计时,你需要深刻理解用户预期,他们希望通过你的应用完成什么,如执行一项复杂的任务,快速找到问题的解答,深入获得综合信息,或者仅仅只是娱乐。以此用户目标作为设计思路的引导。例如,尽管你的食品杂货清单应用应是易于理解的,能让用户可以快速上手,但实际上用户会更倾向于接受一个展示了各种美食、食材的主题界面。
当你考虑应该使用怎样的措辞时,你需要考虑用户对这个应用主题的认知,尽量在措辞上与用户的认知程度匹配。例如,你的用户群或许并不是由专业的厨师所组成,但可以肯定的是,他们同样希望看到有关食材和烹饪技巧的专业术语。
根据任务来定制用户界面(Tailor Customization to the Task)
好的 iOS 应用会根据清晰的目标和易用性来平衡用户界面的设计。为了达到这种平衡,你需要确保在设计的初期阶段就开始考虑界面定制化。因为在设计时通常要考虑品牌性、原创性和适销性,在做决策时往往也会受到这些因素的影响,要想探讨专注于定制化对于用户体验的影响是非常具有挑战性的。
实现定制话设计,可以先从应用中的任务着手考虑:用户以什么频率执行这些任务,在什么样的环境下进行?
举个例子,想象一个精心设计的计算器应用,整个界面充满艺术感的风格,并且使用了创新的布局来展示用户熟悉的计算元素。实际上,这些如艺术品一般的细节渲染和富有创造力的布局并不会影响用户去理解使用它,如怎样点击按钮、查看计算结果。但是对于只是单纯的想使用计算器的计算功能的用户来说,这种新奇的体验和美丽的界面很快就会失去吸引力,反而可能成为一种妨碍。
与计算器应用的例子相反,在一些其他情况中,定制化设计会大大提升用户体验,如 GarageBand 应用,它完全可以不需要好看的、逼真的乐器元素来帮助用户制作音乐,但这样会使用户缺少身临其境的愉悦感。在 GarageBand 里,界面不仅仅是向用户展示了应用功能、引导用户使用,同时提升了用户体验,让制作音乐的这项任务更容易被完成。
当你在思考定制化设计是否会增强还是减弱用户完成任务的注意力时,请记住以下几点:
总是有一个合理的理由来进行定制化设计。在理想情况下,定制化的用户界面能促进用户完成任务,同时增强用户体验。尽可能的以应用的主要任务为驱动,来帮助你做定制化设计决策。
尽量避免增加用户的认知负担。用户对标准界面元素的视觉和交互都已经非常熟悉了,所以他们不需要停下来去思考如何使用它们。而当用户面对的界面,在视觉上和交互上都与他们认知中的标准元素不同时,他们就失去了经验优势。除非你设计的独一无二的元素能够有效促进任务的完成,否则用户很可能不喜欢强制性地去学习一些在其他应用中不通用的操作。
保持内在的一致性。应用中自定义的元素越多,保持这些元素视觉和交互的一致性就越重要。如果用户不得不花费时间去学习你创建的那些他们不熟悉的控件,那么他们会希望新学到的这些操作至少在这个应用中是通用的。
总是以内容为重点。因为用户对标准元素很熟悉,所以这些元素不会分散用户在内容上的注意力。当你自定义用户界面时,注意确保界面元素不会分散用户对内容的注意力。例如,如果你的应用是一个观看视频应用,那么你可能会设计一个自定义的重播控件。不管你用的是自定义的控件还是标准的重播控件,最重要的是,在用户开始观看后,它是否会自动隐藏,用户点击屏幕后是否会重新出现。
在对标准控件进行重设计时再三思考。如果你不只是想自定义标准控件,而是想对标准控件进行重设计,那么你必须确保你重设计的控件能如标准控件一样,提供尽可能多的信息。例如,你设计了一个开关控件,但它却没有可以表明存在相反状态的信息,那么用户很可能意识不到这是个有两个状态的控件。
一定要彻底测试自定义的界面元素。在测试过程中,记得要近距离地观察用户,观察他们是否能预测如何使用你的元素,以及是否能轻易地与它们交互。例如,如果你创建的控件的可点击区域小于 44 x 44 点,用户在点击时就会有困难。如果你创建了一个视图,这个视图中对点击操作和滑动操作的反馈不一样,那你一定要确保这个视图提供的功能值得用户去额外关注这些交互的不同。
原型与迭代(Prototype & Iterate)
在你准备投入大量的工程资源来实现设计之前,最好先通过创建原型来进行用户测试。即使只有几个同事来帮你测试原型,你也会从他们的视角中收获许多关于应用功能和用户体验的新鲜观点。
在设计的早期阶段,你可以使用纸面原型或者线框图去呈现主要的视图和控件,并且标明每个页面之间的跳转关系。你会从线框图测试中获得一些有用的反馈,但是由于呈现的信息较为稀疏,线框图也有可能会误导用户,因为用户会很难想象当线框被实际内容填满时的样子,也无法很好地感受用户体验的变化。
如果你想要得到更多有用的反馈,那么你需要制作一个可以在设备上运行的原型。若用户能直接在设备上与你的原型进行交互,他们会更容易发现应用中哪里功能不满足预期,哪些体验过于复杂。
最简单的创建一个可靠原型的方法是使用基于故事板(storyboard)的 Xcode 模板来创建一个基础应用,然后使用一些占位符来填充空白处的内容。(故事板(storyboard)文件可以涵盖应用中的所有界面,包括界面之间的跳转关系也能很好地呈现出来。)接着,将这个原型安装到设备中来进行测试,这时被测者的用户体验就会更接近于真实的使用状态。
你不需要在原型中提供大量的实际内容,也不一定要使每一个控件都可用,但是你需要模拟出一个足够接近现实状况的情境来保证用户的真实体验。对于典型用户体验和非典型的边缘情况,要做恰当的平衡。例如,如果你的应用在实际使用中,需要处理很长的列表项,那么你的原型就不能只显示一两个条目,而是尽可能呈现出一个长列表。此外,在对用户交互测试中,只要被测者能够顺利地点击屏幕上的一个区域进入到下一个逻辑页面,或者能够完成应用的主要任务,那他们就可能会提供更有建设性的反馈。
当你使用 Xcode 应用模板来创建原型时,你可以免费使用很多功能,还可以通过应用模板相对容易地进行设计中的响应反馈调节。在确定设计方案与开始投入资源进行开发之前,你需要对原型进行多次迭代测试。想要开始学习 Xcode,请参考 Xcode Overview。