通用的产品功能设计方法

  • 1.如何设计注册/登录功能
    • 1.1 注册功能设计
    • 1.2 登录功能的设计
  • 2.如何设计APP启动页功能和引导页功能
    • 2.1 启动页功能设计
    • 2.2 引导页功能设计
  • 3.如何设计非法信息输入校验功能
    • 3.1 非法文本信息的输入校验规则
    • 3.2 非法图片信息的输入校验规则
    • 3.3 非法附件信息的输入校验规则
  • 4 如何设计第三方登录功能和分享功能
    • 4.1 微信登录功能接入
    • 4.2 微信分享功能接入
  • 5.如何设计数据列表功能
    • 5.1 查询模块设计
    • 5.2 列表模块设计
  • 6. 如何设计数据看板功能
    • 6.1 明确用户需求
    • 6.2 选择合适的图表
    • 6.3 确定图表布局
  • 7 如何设计短信群发功能
    • 7.1 短信发送的基本规则背景
    • 7.2 群发短信功能设计
  • 8 如何设计APP消息推送功能
    • 8.1 APP外通知栏消息功能设计
    • 8.2 APP内消息中心设计
  • 9 如何设计APP版本管理功能
    • 9.1 APP版本号命名规范
    • 9.2 APP版本发布流程
    • 9.3 APP版本升级策略
    • 9.4 APP版本升级策略配置
    • 9.5 APP升级流程详解

1.如何设计注册/登录功能

产品基于用户需求设计出来,服务于用户,用户使用产品的过程中产生的各种信息,例如,聊天记录、充值余额、会员积分,点赞/收藏等,下次使用产品时还能找到,这些都依赖产品能知道用户是谁。因此,大多数产品通常会有一套身份识别体系,来帮助产品和用户互相识别,这样的体系叫作账户体系;而用来帮助建立用户身份和识别用户身份的功能叫作注册/登录功能。注册/登录功能是所有拥有账户体系的产品必备的功能,也是每名产品经理都必须要会设计的基础功能之一。图5-1展示了用户、产品、账户体系与注册/登录功能的基本关系。


注册/登录功能是一种通用的产品功能,功能的设计逻辑不基于具体的行业、公司、业务,以及产品形态而改变。注册/登录功能的设计逻辑是一体的,先注册后登录。下面将分别介绍注册功能和登录功能的设计方法。

1.1 注册功能设计

下面以微信账号注册页面的设计为例进行讲解。图5-2展示并标注了微信账号注册功能的基本设计要素,包括账号类型、注册信息、产品使用协议和注册校验4个要素。本节将分别介绍这些要素。

  1. 账号类型
    账号类型指用户在进行产品注册时,使用什么类型的载体作为用户的注册账号。常见的账号类型有手机号码、电子邮箱、自定义账号、自定义用户名,以及第三方账号等。不同的账号类型有不同的优缺点。

1)手机号码
使用手机号码作为注册账号,是目前主流的产品注册方式。首先,手机号码具备特有的短信验证优势。后续无论是换号场景还是忘记密码的场景,都可以通过短信验证码快速验证并完成。同时,普通用户一般情况下不会有很多个手机号,可以有效防止恶意注册的发生。其次,手机号码本身就是用户已经记住的常备信息,不会因为注册新产品而增加记忆负担。

但是使用手机号码作为注册账号也有其特有的缺点,通过获取手机短信验证码进行后续操作,等待时间不可控制,一些场景下有可能收不到手机短信验证码,导致流程中断。

2)电子邮箱

使用电子邮箱作为注册账号和使用手机号码作为注册账号的优缺点类似,前者适用于早期的PC互联网,后者常用于今天的移动互联网。在PC互联网时代,使用电子邮箱作为注册账号是主流的注册方式。随着移动互联网的普及,该方式逐渐被取代,现在多见于PC端的网站账号注册,以及一些面向B端的产品账号注册。如今电子邮箱更多作为一种辅助账号,用于帮助忘记账号和密码的用户找回账号。

3)自定义账号
自定义账号注册方式目前在主流产品中使用得比较少。自定义账号注册方式的优点是,用户可以灵活定义自己的账号。增加用户的记忆成本是它的优点,也是它的缺点。另外,自定义账号注册方式缺少验证流程,会导致大量的恶意注册。

4)自定义用户名
自定义用户名注册方式和自定义账号注册方式类似,只是后者同时把账号作为用户名。相比于纯账号的概念,用户名更加容易记住。典型的案例是,早期淘宝的账号注册允许使用中文汉字。其优点是,用户可以自由定义附带特定意义的账号作为自己在产品使用过程中的用户名。其缺点也是显而易见的,例如,中文中很多生僻字以及标点符号,这些都会增加产品设计的复杂度,增加后期账户体系的维护成本。

5)第三方账号
使用第三方账号作为注册账号的逻辑是用户在一个可信任的第三方产品中已注册过账号,第三方产品对外提供的开放注册能力允许市面上的其他产品接入,用户在进行账号注册时,无须输入账号信息,可以直接通过第三方产品进行授权,进行快速注册。

使用第三方账号注册非常便捷。典型的案例是使用微信注册,在注册一个新产品的账号时,如果该产品接入了微信注册功能,则用户可以快速调用微信进行授权,实现注册、登录无缝衔接。

使用第三方账号注册也有一些不足。例如,用户首次通过第三方账号进行注册并登录后,一般产品为了账户体系的完整性,会强制用户绑定手机号码或者电子邮箱账号,一部分用户会有抵触心理;如果不绑定,当第三方账号出现问题(如微信号被注销或者被封禁)时,则会影响没有绑定其他登录方式的用户使用。

  1. 注册信息
    注册信息主要包含用户的头像、昵称、密码、生日、座右铭等基础信息,不同类型的产品可以选择符合自己产品定位的注册信息来设计注册流程。

  2. 产品使用协议
    产品使用协议是用户使用产品前需要阅读并确认知晓的一份告知文件。不同产品的协议内容并不相同,但通常都会声明用户在使用产品过程中所拥有的权利和责任。产品使用协议一般会在用户注册时,要求用户阅读、确认并同意,也可以在后续用户使用产品时提示用户同意。

  3. 注册校验
    注册校验通常是注册流程的最后一步。当用户单击“确定”按钮时,对应图5-2中的“下一步”按钮,主要对用户在注册页面填写的所有信息进行有效性校验,例如,用户的必填字段是否填写,注册账号是否有效(已经被注册),以及图像、昵称、密码等字段是否合法。

对于注册信息较多的产品,如果这些信息都在最后一步进行校验,当很多字段填写的信息都不合格时,会导致用户需要单击很多次“下一步”按钮,才能完成所有字段的合法性校验。此时,我们可以考虑在每一个输入框控件中输入完成后进行“即时校验”或者“失焦判断”逻辑操作,保证如果用户输入“非法”信息(不符合格式的信息),第一时间提醒用户进行修改。

1.2 登录功能的设计

同样以微信账号登录页面的设计为例进行讲解。图5-3展示并标记了微信账号登录功能的基本设计要素。

  • 登录账号
    登录账号是用户进行登录操作时需要输入的账号,可以是注册账号,也可以是注册账号绑定的其他账号,例如,微信使用微信号登录,但一般会绑定手机号码,所以也可以用手机号登录。

  • 其他登录方式
    登录账号作为用户登录产品的凭证,通常与注册账号保持一致,即注册时用什么账号,登录时就默认用什么账号。如果用户的注册账号绑定了其他账号,那么其他账号也可以作为登录账号(例如,微信可以用已绑定过的手机号、QQ号、电子邮箱登录),用户可以根据实际的登录需求灵活选择。

  • 登录校样
    登录校验通常指用户填写完登录信息,单击“下一步”或者“登录”按钮时,产品对登录信息所做的有效性校验。通常会校验登录账号是否存在,如果登录账号不存在,则提示用户登录账号不存在,重新输入登录账号或者引导用户进行注册;如果登录账号存在,则继续校验登录账号和密码是否匹配。图5-3中微信的登录页面首先在用户单击“下一步”按钮时,对账号进行有效性校验,校验通过后,在下一个页面进行密码校验,如图5-4所示。

    为了提高用户登录的连贯性体验,即不会在产品判断用户账号不存在时,让用户进入注册页面,而是把登录和注册流程设计为一个流程。如果产品判断当前账号不存在,则直接自动注册该账号,并进行登录。当然,这样的设计的前提是提示用户“当前账号如果未注册,则会自动注册并进行登录”。

  1. 登录帮助
    在设计产品的登录流程时,要考虑一些用户可能遇到的困难,从而提供给用户相应的帮助入口。典型的登录帮助场景如下。
  • 用户忘记密码。用户忘记密码时,可以通过账号的验证码(手机短信验证码或电子邮箱验证码)找回密码,例如,若用户记得手机号码,可以通过手机短信验证码来验证,验证通过后可以设置新密码,继续登录。
  • 用户忘记账号和密码。当用户忘记账号和密码时,无法通过手机短信验证码或者电子邮箱验证码等验证方式来找回密码。此时需要走申诉流程,即用户提供有效信息,证明自己的身份,然后找回账号和密码。例如,用户历史账号所登录过的地区、时间,好友信息、购物信息,使用过的密码等都可作为有效信息。用户提供的有效信息越多,则找回账号和密码的效率就越高。

除忘记账号和密码等常见帮助场景之外,某些用户在登录页面时可能会遇到其他的帮助场景(如紧急冻结账号),这些帮助场景需要由特定的入口和功能承载。在设计登录模块时,要根据产品的实际情况和用户登录场景全面考虑。

以上是注册/登录功能的产品设计方法介绍。无论是PC端网站类产品,还是移动端APP类产品,作为通用功能,注册/登录功能的设计细节可能根据产品会所有差异,但是其整体的设计思路和设计方法不会基于产品的形态和定位而改变。在实际的产品设计过程中,要掌握方法,基于用户需求和应用场景灵活变化,从而设计出完整闭环的注册/登录流程。

2.如何设计APP启动页功能和引导页功能

在设计APP产品时,我们经常会听到品牌页、闪屏页、欢迎页、广告页、活动页、引导页等称呼,以至于很多人搞不清楚它们之间的关系。这里以页面的位置及内容作为划分标准,把它们分为两类,分别是启动页和引导页。本节主要介绍启动页功能和引导页功能的设计方法。

2.1 启动页功能设计

APP启动页的设计如图5-5所示。启动页是APP每次启动时的主页面(启动页也称作品牌页、闪屏页、欢迎页、广告页、活动页)。启动页按内容主要分为三类,分别是品牌/产品展示类、广告/活动展示类和纯内容展示类。

  1. 品牌/产品展示类
    大多数产品通常会把品牌介绍放在APP启动页,向用户传达品牌定位,强化品牌价值。如图5-6所示,通常品牌介绍需要突出品牌Logo,以及品牌Slogan,例如,Keep的Slogan是“自律给我自由”,向用户传达出一种自律、健康、积极、向上的产品定位和品牌形象。

除展示产品定位和品牌形象之外,一些产品在迭代出新能力后,也会选择在启动页展示,告知并引导用户去使用。如图5-7所示,中国银行手机APP在启动页向用户展示了其新功能。


  1. 广告/活动展示类

APP启动页除用于品牌展示和产品介绍之外,还经常会承载商业广告和营销活动,如图5-8所示。因为启动页是用户使用产品时一定会看到的页面,所以它也是广告投放效果及营销活动展示效果最好的位置。

  1. 纯内容类
    纯内容类APP的启动页通常是特定的内容,例如,一些APP会以用户的摄影作品作为启动页,如图5-9所示。当然,这类APP比较少见,通常启动页会被品牌展示、产品介绍、商业广告和营销活动等内容占据。

以上是对APP产品启动页展示内容的介绍。在实际的产品设计过程中,除根据产品定位和运营需要,选取合适的启动页内容之外,还要注意启动页内的细节交互设计,例如,从启动页进入产品首页的交互逻辑是用户手动单击“跳过”或“进入”按钮进入首页,还是短暂地停留(要明确停留时长)后自动进入首页。

其次,是否需要提供Wi-Fi预加载启动页功能,启动页设计成静态的(固定的启动页),还是设计成动态的(在线获取启动页,可以保证每次启动页都不相同,常用于广告类启动页),需要根据产品的实际需求综合考量。

2.2 引导页功能设计

引导页用于引导用户使用产品。当发布了产品新功能后,为了降低用户的学习成本,使用引导页来逐步引导用户使用新功能。通常引导页只出现一次,引导完用户后就会消失,不再出现。

图5-10展示了常见的引导页样式。引导页通常会出现在需要引导用户的具体页面,告诉用户每一步应该做什么,页面有哪些功能,更新了哪些特性。

引导页的设计比较简单。除引导页的样式和内容之外,产品设计过程中还需要在PRD中明确引导页的触发事件、出现次数,以及进入和退出的交互逻辑。

3.如何设计非法信息输入校验功能

在使用产品的过程中,用户通过信息输入控件执行信息输入指令是很常见的一种交互场景。注册、登录、搜索、资料提交等操作都属于这种输入场景。用户输入信息后,信息输入控件会对用户输入的信息进行校验。如果输入的信息不符合产品要求,则会提示用户进行修正并重新输入,这样的校验过程也叫作“信息输入的合法性校验”过程,这个过程所用到的功能称为“非法信息输入校验”功能。

常见的用户输入信息主要分为3种,分别是文本信息、图片信息,以及附件信息。对于不同类型的信息,校验功能的设计方式也不同,但是设计思路是一样的,都会对用户输入的信息进行一系列的规则校验(合法性校验),对于没能通过校验规则的信息,需要对用户进行提示,说明校验不通过的原因,并给出修正意见,提示用户重新输入。本节将分别介绍非法文本信息的输入检验规则、非法图片信息的输入校验规则和非法附件信息的输入校验规则。

3.1 非法文本信息的输入校验规则

  1. 文本格式限制
    不同的文本输入信息有不同的格式要求。例如,“手机号码”字段的文本格式只能是数字,不能使用字母或标点符号,因此在“手机号码”文本框内,要添加禁止中文、字母、标点符号、特殊符号等非数字信息的限制规则。当在文本框中输入非数字格式的信息时,则控制非数字文本无法输入,同时使用帮助文本提示用户只能输入数字。

  2. 文本长度限制
    文本输入长度通常是有限制的,不能让用户输入无限长的无效信息。例如,在中国,手机号码固定是11位数字,超出11位则无法输入。除“手机号码”这种有固定位数限制的字段之外,任何字段在进行产品设计时,都要考虑输入长度的极限值,包括最小长度和最大长度。当用户输入的内容长度小于最小长度时,则提示用户输入的内容的长度必须大于最小长度;当用户输入的内容长度大于最大长度时,则禁止用户继续输入,同时提示用户已达到最大文本长度限制。

  3. 特定文本类型规则限制
    除文本格式和文本长度这样的通用规则限制之外,还存在基于文本信息自身特性所衍生出来的特定规则。例如,对于“手机号码”字段,当我们知道了三大运营商的基本号段规则后,就可以有效地针对“手机号码”输入框进行非法信息输入校验。例如,在不考虑区号的情况下,“手机号码”输入框的第一位数字一定是1,如果第一位数字是别的数字,则立刻提醒用户输入正确的手机号码,同样手机号码的第二位不能是1、2、4、6等,如果出现这些数字,则同样立即提示用户输入正确的手机号码。以此类推,身份证号也好,银行卡号也罢,只要我们掌握了文本信息规则特性,就能根据这些特性设计出合理的非法信息输入校验规则,从而及时提醒用户,打造良好的用户体验。

值得强调的是,引入的外部规则越多,虽然越能带来良好的用户体验,但是随着外部规则的变化,产品本身的规则也要变化,而每一个规则的变化都需要投入研发成本。所以,在产品设计过程中,产品经理要在良好的用户体验和必然的成本投入之间,找到一个平衡点。

进行产品设计,一定要有成本意识,要时刻牢记,我们所设计的产品本质上也是一种商品,是商品就要考虑成本和利润。当强调产品的有用、好用时,也要强调一定程度上的“够用”。很多时候,追求极致的用户体验反而是一种“偷懒”,因为追求极致可能会导致过度设计,而过度设计会导致成本浪费,从而造成商业上的不可持续。

  1. 文本内容规则限制
    在设计非法信息输入规则时,还要关注文本内容的合法性。例如,违禁词、违法信息通常是不允许用户输入的,若检测到这些内容,需要提示用户“当前内容存在敏感信息,请重新输入”。

3.2 非法图片信息的输入校验规则

  1. 图片格式限制
    图片格式限制和文本格式限制类似,某些场景下,图片上传控件会要求用户只能上传特定格式的图片,如JPEG、PNG等。

  2. 图片尺寸限制
    文本信息有长度限制,对于图片信息,长度限制变成了尺寸限制,这些限制可以保证图片要素的统一,便于管理和维护图片。例如,用户注册新产品并上传本地相册的图片作为用户头像,产品通常会提供图片裁剪功能。裁剪功能不仅起到了对图片尺寸进行限制的作用,还可以对图片进行调整。

  3. 图片大小限制
    图片尺寸限制限制的是图片的宽和高,图片大小限制限制的是图片占用多大的内存空间。例如,一些产品考虑到图片的传输效率和存储成本,限制上传的图片大小不能超过2MB等。

  4. 图片内容限制
    与文本内容限制类似,敏感图片、非法图片等也不允许用户上传,需要提示用户“当前图片信息不合法,请重新上传”。

3.3 非法附件信息的输入校验规则

关于附件,请注意以下方面。

  • 附件格式限制。附件格式限制与文本格式限制、图片格式限制类似,如某些产品只支持MP4、AVI等格式的视频附件上传。
  • 附件大小限制。附件大小限制与图片大小限制类似,这里不再介绍。
  • 附件内容限制。附件内容限制与文本内容限制、图片内容限制类似,这里不再介绍。

无论输入的信息是什么类型,非法信息输入校验功能的目标是不变的,都是在用户输入信息的过程中,通过一系列的规则限制,打造良好用户体验的同时,维护产品信息的有效性。

4 如何设计第三方登录功能和分享功能

当你使用微信登录了网易云音乐,然后听到一首好听的歌曲时,你选择分享歌曲给自己的微信好友。整个过程中,你使用了微信的登录功能,也使用了微信的分享功能,我们把这样的功能称为第三方登录功能和第三方分享功能。

第三方登录功能和第三方分享功能都是通用的产品功能,经常应用于移动端APP类产品和PC端网页类产品中。这里的“第三方”通常指微信、微博、QQ等大型的、具有强传播效应的社交类产品。

很多初级产品经理刚开始设计产品时,看到其他产品具备第三方登录功能和分享功能,也想为自己的产品接入这些功能,但是不知道该怎么接入。下面以微信这个常见的第三方产品为例,介绍如何快速地为自己的产品接入微信登录功能和分享功能。

在介绍如何接入微信登录功能和分享功能之前,产品经理一定要明确第三方产品具备哪些开放能力。以微信为例,无论是登录能力、分享能力,还是支付能力等,每一项能力的说明,以及如何接入,都会在其开放平台的文档中详细说明。这些信息对外是公开的,也是对称的。产品经理要善于获取第三方开放平台的信息,了解它们对外提供的功能有哪些。这些功能与自己的产品结合能带来哪些增益。

下图展示了微信开放平台的基础能力文档,微信登录和分享功能的介绍和接入方法在文档里都有详细说明。

4.1 微信登录功能接入

在接入微信授权登录之前,首先需要在微信开放平台注册开发者账号,拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret。这部分工作通常由技术人员或者运维人员来完成,申请微信登录且通过审核后,即可开始接入流程。

接下来产品需要设计具体的微信登录接入方案,以APP产品为例,通常要考虑Android系统和iOS两种微信登录方式。目前移动端微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。

对于Android应用,建议始终显示微信登录按钮,当用户手机未安装微信客户端时,请引导用户下载并安装微信客户端。

对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录功能时,先检测用户手机是否已安装微信客户端,对未安装微信客户端的用户隐藏微信登录按钮,只提供其他登录方式(如手机号注册登录、游客登录等)。

下图展示了网易云音乐微信登录流程。网易云音乐登录页面提供了微信登录功能,用户选择微信登录后,跳转到微信授权页面,用户授权后,即登录成功。

在产品设计过程中,要考虑到以下两种情况。

  • 老用户登录:老用户登录授权后,直接登录成功。
  • 新用户登录:需要引导新用户绑定手机号码或者电子邮箱账号等其他登录账号。

绑定其他账号的目的是增强账户体系的强健性。如果仅仅用微信作为用户的登录方式,则在用户的微信号被封或用户无法安装微信的情况下,用户将无法通过微信登录。账户体系的设计会在后面详细介绍。

4.2 微信分享功能接入

以微信的视角来看,微信分享功能指微信生态提供的一种供第三方APP接入,让用户可以从APP分享文字、图片、音乐、视频、网页、小程序至微信好友会话或朋友圈的能力。

微信分享功能目前支持文字、图片、音乐、视频、网页、小程序这6种类型(海外应用支持网页、小程序类型)的分享。开发者先在微信开放平台账号下申请APP并通过审核,接着在APP中集成微信SDK,即可调用接口实现微信分享功能。

下图展示了网易云音乐这款APP的微信分享功能,用户可以分享自己喜欢的歌曲到朋友圈。

在接入微信分享功能时,要注意阅读微信开放平台文档,如图5-14所示,分享内容要明确的字段有消息标题、描述内容(可以理解为详情)、缩略图和消息类型。APP可以自由定义标题名称、描述语,以及缩略图。目前支持分享的消息类型有图片、音乐、视频和网页。


以微信为例,以上介绍了APP如何接入第三方登录功能和分享功能。除微信之外,还有微博、QQ等诸多第三方产品。每款第三方产品都有其独特的能力和优势。无论接入哪款产品,接入步骤和方法都是不变的。产品经理需要做的是,明确自己的产品定位和用户画像,确定需要接入的第三方能力,为自身的产品带来增益。

例如,如果通过分析用户画像,我们确定产品的用户和微博的用户重合度较高,那么我们就有理由认为安装了自己产品的用户大多数也安装了微博,可以接入微博登录功能及分享功能。微博登录带给用户便利,用户分享产品内容到微博时也可以为自己的产品带来新的用户。

5.如何设计数据列表功能

数据列表是一种通用的产品功能,经常出现在各种管理后台产品中,主要由查询模块和列表模块两部分组成。其中,查询模块主要由各种搜索选择器以及“查询”按钮与“重置”按钮组成;列表模块主要由列表页和增、删、改、查等功能按钮组成。数据列表模块的结构如图5-15所示。

5.1 查询模块设计

查询模块的核心功能是通过一系列的查询控件输入查询指令,控制列表模块显示的内容。查询模块的搜索字段均来自列表模块的表头字段,例如,在查询模块的“客户ID”搜索框中,输入某个客户的姓名,然后单击“查询”按钮,列表模块就会显示该客户的信息。

查询模块中的各个搜索条件都是独立存在的。如果在一次搜索过程中同时输入了两个搜索条件,那么查询结果取基于两个条件的查询结果的交集。例如,张三是一个客户,直接搜索“张三”的姓名,可以直接查到张三的信息;如果在查询“张三”的姓名的同时,也在性别选项中,选择了“女性”这个维度,那么查询的条件就变成了在所有女性客户中寻找名为“张三”的客户;或者说在所有名为“张三”的客户中,寻找女性客户。

除性别维度外,还有地区、时间等维度,以此类推,无论选择多少个维度,最后都取基于这些条件的查询结果的交集。

在设计查询模块时,还要注意两个特别重要的按钮,它们分别是“查询”按钮和“重置”按钮。前者承载着查询指令的输入功能,例如,在“客户ID”搜索框输入“张三”,单击“查询”按钮,系统就会查询张三这个客户的信息,并显示在列表模块。后者承载着查询指令的清空和重置功能,例如,进行多种条件查询时,一个一个清空和重置查询条件费时费力,单击“重置”按钮可以一键清空当前输入的查询条件,恢复为默认状态。

5.2 列表模块设计

列表模块主要分为3个区域,如图5-16所示,它们分别是主功能区、列表区和分页功能区。


其中,主功能区主要承载一些高频且可以批量化操作的功能,例如,“新增”功能和“导出”功能;列表区主要用于展示数据列表,其中表头字段是整个列表区信息结构的主要部分,例如,订单系统中的“订单号”与CRM系统中的“客户姓名”等都是列表区常出现的字段信息。

在设计列表区时,不要忘记列表首列的复选框,它用于实现多条数据的批量操作。例如,CRM系统中经常会一次选择给多个客户发送短信/邮件,无论当前的产品功能是否有批量化操作,为了增强后续产品功能的可扩展性,在设计初期尽量不要忽略复选框这个要素。

其次,列表区的最后一列和其他列有所不同,其他页是字段信息,而最后一列一般是功能操作区。它和主功能区一样,承载的也是数据操作功能,主功能区的功能也可以放在列表区的每一行数据的功能操作区。二者不同的是,一般主功能区主要放置一些可以批量化操作的功能或者全局功能。例如,“新增”功能是一个全局功能,就适合放在主功能区;“编辑”功能是一个针对某一行数据的功能,适合放在每一行的功能操作区;而“删除”功能既可以放在主功能区,也可以放在每一行的功能操作区。

最后,设计分页功能区。分页功能区使用了分页器控件,主要功能是控制列表区数据的条目显示及翻页操作。例如,通过分页器控件控制每一页显示多少条数据,跳转到下一页或者指定页码。

以上介绍了数据列表功能的产品设计方法。不同系统的数据列表功能和样式也许各有差别,但是基本模块分区和功能设计思路是不变的,掌握了通用设计方法,在工作中遇到实际业务需求时,就能得心应手地完成产品设计。

6. 如何设计数据看板功能

数据列表中的数据又称为原始数据,主要承载数据的查询和管理功能。在实际的业务场景中,为了有效地通过数据分析对产品和业务进行评估和指导,通常需要把数据列表的原始数据用图表的形式展示出来。

列表数据图表化的过程也叫作“数据可视化”过程,得到的图表集合称为“数据看板”。数据看板集合了各种维度和指标的图表,可以满足产品和业务人员的数据统计和分析需求。图5-17展示了常见的数据看板示例。本节将详细介绍数据看板功能的设计方法。

6.1 明确用户需求

设计数据看板功能时,第一步要明确这个数据看板是给谁看的,即明确数据看板的用户是谁。不同角色的用户关注的数据是不一样的,例如,总经理或者CEO(Chief Executive Officer,首席执行官)这样的高层管理者需要的是战略看板,关注的是公司维度下,各个部门、产品线、市场、销售、财务等整体的数据指标,公司整体目标的达成情况;而业务或部门负责人这样的中层管理者需要的是业务看板,关注的是自身业务的数据指标,如营收、业务监控,以及业务目标的达成情况;一线员工关心的则是部门和自己的业务指标、个人绩效等。

在设计实际数据看板的过程中,各种决策要始终围绕着用户需求进行。数据看板以其用户作为数据分析和业务决策工具,不能为了可视化数据而可视化数据,追求华丽多变的图表效果,而忽略了用户的原始需求,以及产品功能设计的目的。

6.2 选择合适的图表

在了解用户的数据看板需求后,要对数据列表的原始数据进行可视化加工,最终以图表的形式展示出来,把用户需求最终转换成数据看板。在选择图表的过程中,要理解不同的图表适合展示不同的数据,例如,数据卡片适合表示重要的静态指标,柱状图适合表达对比,折线图适合表达趋势,饼图适合表达占比等,要明确具体的数据和指标适合用什么样的图表来展示。

  1. 数据卡片
    数据卡片是数据看板中一种常见的图表类型,主要用于展示一些重要的静态数据指标,如用户数、销售额、订单数等,如图

    数据卡片主要由3个元素组成,它们分别是指标名称、指标数值和指标描述。其中,指标名称指指标的命名,例如,“用户数”就是一个指标名称;指标数值指实际中针对指标统计的数值,如1000万,通常卡片中指标值需要突出显示;指标描述指对指标的解释[因为有些指标(如“跳出率”和“留存率”)比较专业,并非所有使用数据看板的用户都知道相关概念,所以我们可以在数据卡片中用简洁的语言描述指标的定义和计算方式],让使用数据看板的用户可以快速地理解指标的含义。在设计过程中,样式一般选择“气泡卡片”控件,鼠标单击或者移入时,可以显示指标释义。

除上述主要的3个元素之外,我们还可以根据实际需求为数据卡片添加辅助指标。例如,“销售额”是一个核心指标,而销售额的“环比增长率”就可以作为“销售额”的辅助指标显示在数据卡片中,为用户展示更多的信息。

  1. 柱状图
    柱状图又称为柱形图,如图5-19所示,是一种以柱状条高度为变量的统计图表。柱形图用来比较两个或以上的数值(不同时间或者不同条件),只有一个变量,通常用于较小的数据集分析,其中长条图亦可横向排列,或用多维方式表达。

柱状图适用于二维数据集(每个数据点包括两个值x和y)中只有一个维度需要比较的场景。柱状图利用柱状条的高度,反映数据的差异,肉眼对高度差异很敏感,因此柱状图的辨识效果非常好。

  1. 折线图
    同一个指标在连续节点上的数值连线形成了折线图,折线图可以显示随特定维度(如时间维度)而变化的连续数据,适用于反映数据变化的趋势。折线图示例如图5-20所示。

  1. 饼图
    饼图通常用于显示一个数据系列中各项数据占总和的比例,属于简单的占比图,可以清晰表达同一个整体中,不同成分的比例关系。在使用饼图时要注意用数字标明占比情况,如图5-21所示。

  1. 漏斗图
    当我们需要对某个具备转化和递进特性的流程进行数据监控和分析时,漏斗图是一个不错的选择。通过对漏斗中各环节数据的比较,我们能够直观地发现和说明问题所在。例如,在网站分析中,提前设计好转化路径,为每一步转化设计好数据埋点,监控每一步的转化率,如果某一层的转化率较低,就对这个层级进行转化率分析,找出原因并得出优化方案,如图5-22所示。

  2. 雷达图

雷达图是一种形似蜘蛛网的网状图,可以对涉及多个组别、多种变量的项目进行对比。它可以反映数据相对中心点和其他数据点的变化情况,清楚地反映事物的整体情况,如图5-23所示。

  1. 排行榜

排行榜作为一种特殊的图表,常用来表达一组数据的排名情况,也是数据看板中常见的一种图表形式,如图5-24所示。

以上介绍了数据看板中常见的图表类型。当然,在设计实际产品的过程中,根据需求场景,我们会用到更多类型的图表,如散点图、热力图、关系图、旭日图、路径图和桑基图等。市面上也有很多图表框架,如ECharts、AntV等,它们可以作为产品设计的参考。

6.3 确定图表布局

在明确了用户的数据看板需求,选择了合适的图表后,还要对图表进行排列布局,最终形成完整的数据看板。在确定图表布局时,如果不同的看板中图表的个数、形态和大小不一致,那么怎样才能把这些多变的元素规范起来,形成有序布局的数据看板呢?

这里需要引入“框格”这个抽象的概念。类似于图片中“像素”的概念,数据看板是由框格组成的,框格用来容纳图表,如图5-25所示。一个框格可以容纳一张或者多张图表。

把数据看板理解成一张大画布,图表排版的过程就是在画布中填充框格的过程。如图5-26所示,整个数据看板分为4行,总共有4个框格。第1行的框格中有4张数据卡片,第2行的框格容纳了一张柱状图,第3行的框格容纳了一张饼图和一张雷达图,第4行的框格中容纳了一张折线图。它们整体形成了一个清晰完整的数据看板。


以图5-26中的数据看板为例,可以总结出,在规划数据看板的布局时,要把数据看板看成多行、多列的框格。根据用户眼球的浏览习惯,把重要的图表按照从上到下,从左到右的顺序填充进去;根据图表实际的形状和大小,决定每一行的框格所容纳的图表数。

如果某个特定的图表和其他图表的高度差距很大,则它可以放在一个大的行框格中,然后再把其他较小的图表容纳进来,如图5-27所示。


图5-27中,“排行榜”这个图表的尺寸较大,放在了一个大的行框格中,框格的空间还可以容纳下“雷达图”和“饼图”,所以在第3行的框格中,实际上容纳了3个图表。

以上就是数据看板图表布局的设计方法。在实际的产品设计过程中,我们可以多参考一些UI框架中的数据看板案例。这些案例本身符合设计的规范并且经过用户的有效性验证,根据实际产品需求进行一定程度的复用,可以提高产品设计效率和质量。

7 如何设计短信群发功能

产品消息除通过应用外的消息通知栏以及应用内的消息中心触达用户之外,还可以通过短信触达用户。事实上,公告通知、活动推广、新品宣传、会员关怀、商品促销、活动邀请、用户拉新、流失召回等诸多的能力都可以通过群发短信功能实现。群发短信功能已经成为客户关系管理中最常见的方式之一。

本节主要介绍群发短信功能的设计方法,主要内容包括两部分,分别是短信发送的基本规则背景和群发短信功能设计。

7.1 短信发送的基本规则背景

  1. 短信的结构
    短信主要由签名、文本和变量三部分组成。

签名是短信服务提供的一种快捷的个性化签名方式。根据用户属性,创建符合自身属性的签名,一般建议设置为账号主体所在机构的全称或简称。当发送短信时,短信平台会将已审核通过的个性化短信签名添加到短信内容中,再发送给短信接收方。

例如,如果企业主体为“阿里巴巴网络技术有限公司”,则可以提交的签名包括企业全称或简称——【阿里巴巴】【阿里巴巴网络技术有限公司】;公司旗下产品名称包括【淘宝网】【阿里云】等。

文本指短信的文本内容,其中一种特殊的文本称作“变量”。变量会根据用户自动转换成合适的文本。例如,如果在短信中附带客户姓名,群发短信后不同的客户会收到附带自己姓名的短信内容,这个“姓名”就是一个变量,取值来自“客户姓名”字段。

  1. 短信的模板
    不同的场景下,我们需要发送不同的短信,例如,用户注册/登录时会发送短信验证码,用户的生日时会发送祝福短信。这些短信的场景和内容具备重复性和复用性,为了提高效率,我们可以设计成短信模板,通过模板快速响应。

短信模板由变量和模板内容构成。模板内容利用变量提供针对不同手机号码的短信定制方式,在模板中设置变量后,发送短信时指定变量的实际值,短信服务会自动用实际值替换模板变量,并发送短信,实现短信的定制化。

这里以阿里云短信平台的短信模板“【阿里云】您正在申请手机注册,验证码为${code},5分钟内有效!”为例进行讲解。

案例中的模板内容如下。

您正在申请手机注册,验证码为${code},5分钟内有效!模板变量为${code}。

  1. 短信的审核
    在介绍短信审核的背景前,先讲述短信服务的基本链路。整个短信服务链路中有3个基本角色,它们分别是短信运营商、短信服务商和短信用户。

短信运营商是提供短信服务的供应商,中国电信、中国移动、中国联通三大运营商都属于短信运营商,因为我国在电信管理方面相当严格,只有拥有中华人民共和国工业和信息化部颁发的运营牌照的公司才能架设电信网络。因此国内短信运营商目前只有中国电信、中国移动、中国联通,三家独立运营,也存在一定的竞争关系。

短信服务商也称为短信群发平台或第三方短信平台,例如,腾讯云短信、阿里云短信、华为云短信等都属于短信服务商。短信服务商通过与短信运营商达成协议,获得短信通道使用资格,利用短信(如验证码短信、营销短信等)和彩信等,通过客户端直接向运营商服务器发送群发请求,然后为用户提供短信服务。

但无论用户的产品接入的是哪家短信服务商的短信服务,在短信内容方面,都需要遵守《通信短信息服务管理规定》,所以通常短信服务商会有审核机制,即发送给用户的短信内容需要提交给短信服务商进行审核,审核通过后才可以发送。

7.2 群发短信功能设计

群发短信功能的设计主要分为4个步骤,分别是新建群发短信,管理短信模板,管理用户分群,管理群发记录。

  1. 新建群发短信
    图5-29展示了新建群发短信功能页面。首先编辑短信文本我们可以输入短信内容,也可以引用已经编辑好的短信模板。


其中,短信文本可以自由编写;发送短信的对象是用户,通常需要对用户进行分群,以实现精准的短信投放;短信内容和发送对象都准备好后,还需要单击“提交审核”按钮,提交给短信服务商进行审核,审核通过后可以设置为立即发送,也可以设置为定时发送。

  1. 管理短信模板
    一款产品中,需要发送短信的场景基本上是固定的,例如,用户登录验证码短信,用户找回密码的短信,用户生日祝福短信,基本余额变动提醒短信等。

这些短信都会提前设置好短信模板,在手动发送短信或者触发事件并发送短信时,无须再次输入短信内容,而直接调用模板内容实现高效率的短信发送。因此,通常需要设计短信模板管理模块来管理短信模板,如图5-30所示


新建一个短信模板,通常需要选择短信模板的分类,如登录验证码短信模板、异地登录提醒短信模板、账户余额不足提醒模板、生日祝福模板等。短信模板内容主要由文本内容和变量组成。

短信模板中的文本一般由运营人员根据短信模板类型提前编辑好,其中可以引用系统中提供的丰富的变量,变量格式一般为{变量名}。

下面是一个短信模板说明示例。

特别说明如下。

(1)请不要在短信模板内容中填写特殊字符,包括换行符。

(2)短信模板内容不能多于65个字(其中空格、数字、字母、汉字均为一个字)。

变量说明如下。

(1){称呼}表示企业联系人的称呼或个人客户的称呼(如王总,周经理就是客户信息中的称呼,如果为空则发送时会显示联系人名)。

(2){联系人名}表示企业联系人名称或个人客户的名称(如张三)。

(3){客户名}表示企业客户的客户名称(如深圳市××××科技有限公司)。

  1. 管理用户分群

某些类型的短信(如营销短信)通常不是发给所有用户的,而是发给特定目标用户的。为了实现精准的短信投放,要对用户进行分群。用户分群的维度可以是性别、年龄、地区、新/老用户、活跃度、忠诚度以及其他自定义的标签等。例如,一款母婴产品需要投放一条母婴广告短信,在该产品的用户管理系统中如果能标记出那些女性用户是孕妇,就可以筛选出这些目标用户并进行精准的广告短信投放。

  1. 管理群发记录
    群发记录模块主要的功能是统计所有短信的群发记录,通常被设计成列表形式。其中关键字段信息包括短信内容、发送人员、群发状态、短信条数、到达条数、发送时间、操作等,如图5-31所示。

● 短信内容:记录已发送短信的内容。
● 发送人员:记录当时发送这条短信的系统用户。
● 群发状态:记录当前短信的状态,通常有未提交、待审核、未通过、待发送、已发送等状态。
● 短信条数:短信选择发送的用户总数,也称为“发送用户数”。
● 到达条数:实际收到短信的用户数,也称作触达用户数。由于某些状况,如用户手机号注销或者手机号不存在,并不是所有选择发送的客户都能收到短信,到达条数通常会小于或等于短信条数。
● 发送时间:短信实际发送的时间,用于完善短信的发送记录。
● 操作:主要包括“详情”和“删除”两个文字按钮。单击“详情”按钮可以查看短信的所有基础信息和发送记录,如图5-32所示;单击“删除”按钮则可以删除短信记录。


以上就是群发短信功能的设计方法介绍,用户在设计群发短信功能时需要结合自己产品的实际情况,活学活用,适合的产品方案才是最好的产品方案。

8 如何设计APP消息推送功能

无论是产品信息对用户的触达,还是用户和用户之间的通信,(一款产品的通信能力)都是通过“消息”来承载的。从类型来看,消息主要分为文本、图片、音频、视频、网页等信息;从用途和使用场景来看,消息主要分为IM消息和非IM消息。

IM是Instant Messaging的简称,称作即时通信。社交类产品QQ与微信的单聊、群聊、聊天室等都属于即时通信场景。APP的消息推送(包括应用外的通知栏消息,以及应用内的产品功能通知、活动推广、订阅与广播内容等)都属于非即时通信场景。APP消息类型和消息场景如图5-33所示。


本节主要从APP产品经理的视角,介绍如何为自己的产品设计消息推送功能。消息推送功能的设计主要分为两部分,分别是APP外通知栏消息功能设计和APP内消息中心设计。

8.1 APP外通知栏消息功能设计

APP外消息主要指通知栏消息。推送通知栏消息的过程,又称为推送,指运营人员(主动人工推送)或者系统自身(被动事件触发)通过消息推送功能对用户移动应用(一般指APP)进行消息推送的过程。

几乎所有的APP都具备消息推送功能,用户可以在移动设备的通知栏看到推送消息通知,单击相应的消息条目,可唤醒APP并跳转至指定页面。消息推送可以很好地触达用户,提高APP的用户活跃度,也是各种运营活动触达用户很好的方式。

本节按照步骤介绍如何设计APP通知栏消息推送功能。

  1. 接入通知栏消息推送功能
    消息推送功能通常不必由产品自身的技术团队去独立研发(如果团队有技术能力独自研发消息推送功能的产品,可以直接跳过这一步),在市面上很多成熟的第三方技术服务提供商专门提供消息推送整体技术解决方案。例如,极光推送、腾讯信鸽、百度云推送、个推和华为云推送等,每一家服务提供商都有自己的优劣势。产品经理需要做的是调研好这些技术服务商的方案和成本,供产品研发技术团队、运维团队与采购团队做技术评估和采购决策。

  2. 设计用户标签分类
    在具备完整的产品消息推送能力后,要对推送的人群进行分类。一条消息推送的对象可以是所有用户,也可以是按标签分类的用户。标签的维度有多种,例如,用户职业、爱好、性别、会员等级、年龄段、活跃程度、忠诚度、地区、使用的设备、系统版本、应用版本、发布渠道等。对用户按标签分类可以保证推送的消息面向的用户足够精准,有利于精细化运营的实施。

  3. 设计推送策略
    推送策略主要分为两部分,分别是内容策略和推送策略。内容策略决定推送什么内容给用户,推送策略决定以什么方式推送给用户。

一般产品推送的消息内容主要由运营人员手动确认,如情人节活动,运营团队设计好活动落地页后,通过推送消息的方式推送给用户;也可以由特定的事件规则来决定,如某新闻APP中,若某条新闻的热度达到特定值,就会推送给用户,从而让更多的用户看到。对于推送策略,除设计每条消息按照用户分类确定推送人群之外,我们还可以设置消息立即推送或定时推送。

  1. 统计推送数据
    一条消息推送给用户后,要对相关的数据进行统计,统计维度包括两个,一个是消息自身的触达数据;另一个是消息本身带来的运营数据。前者关心的是这条消息的成功推送的用户数、用户单击数、触达率、单击率等;后者关心的是这条消息产生的运营指标,如果推送的是一条抽奖活动消息,那么关心的就是该活动的参与人数、中奖人数、参与率,以及实际中奖率等。

到此,一个完整的APP消息推送链路就建立起来了,得到的结果如图5-34所示。

8.2 APP内消息中心设计

APP内的通信功能主要由消息中心来承载,通过消息中心,产品的各种信息可以进行集中管理,从而有序地向用户传递。和通知栏消息推送功能一样,如果产品团队自身有研发能力,可以自己设计应用内的消息通信功能。考虑到投入产出比,团队也可以引进第三方的技术服务。图5-35展示了网易云这款产品的消息中心设计。


消息中心包含需要告知用户的所有消息——用户和其他用户的IM消息、产品公告消息、运营活动消息、客服对话消息、用户订阅消息等。对于消息中心模块,要从消息呈现、消息分类和消息管理三个方面来设计。

  1. 消息呈现
    用户收到的消息通常按照时间顺序进行排列,新收到的消息会显示在最前面,如果发生信息交互,则这条刚交互的这条消息会置顶,显示在最前面。对于特殊消息,设计置顶的逻辑,如重要的通知和活动可以自动置顶在消息中心以增加曝光率。

  2. 消息分类
    为了更好地管理,消息中心可以对消息进行分类,消息通常可以分为IM消息、公告消息、活动消息、订阅消息等。分类的好处是用户可以快速地通过消息类型识别自己关注的消息。

图5-36展示了“全民K歌”APP消息中心示例。该消息中心对消息进行了详细分类,包括评论和点赞、礼物、最近听众和好友更新。在消息流中,又有官方消息、陌生人私信、漂流瓶、资产变更通知等特有的消息类型。


虽然根据产品类型,消息的分类不尽相同,但总体设计思路是不变的。在设计消息中心的消息分类时,要从产品的实际功能出发。首先,要明确自己的产品会向用户传达哪些消息;其次,对消息进行合理分类;最后,实现页面,确定交互逻辑,输出完成的产品方案。

  1. 消息管理
    用户对消息的操作通常有以下几种。

● 标记已读(针对未读消息):用户将未读消息标记为已读。这个操作主要适用于用户觉得这条未读消息不重要或者已知晓,希望去掉未读消息提示的红点,降低在其在消息列表的权重(靠后)的场景。
● 标记未读(针对已读消息):如果对于某些重要消息,虽然用户已读(红点提示消失),但是存在一些场景,如这条消息很重要,需要再次提醒,则可以对此条已经阅读过的消息进行未读标记。标记未读后,已读消息前面会重新出现红点,提高在消息列表中的权重(靠前)。
● 消息置顶:当用户需要强调某条消息的重要性时,如果将其置顶,则这条消息会在消息列表的最上面显示。要注意多条消息置顶的规则,以及取消置顶功能闭环的设计。
● 删除消息:当用户觉得某些消息不重要时,会对这些消息进行删除操作,这时消息会在消息列表消失。

在实际的产品设计过程中,要理解设计思路,并灵活地运用到自己的产品中,才能设计出更符合用户需求的产品。

9 如何设计APP版本管理功能

当APP产品进行了某些功能的迭代更新后,通常要发布新的版本来触达用户。已经安装过APP的用户可以通过应用内的版本更新功能进行升级;未安装APP的用户可以通过应用商店等渠道下载并安装最新版本的APP。APP版本号通常用来作为区分新旧版本的唯一标识。

作为一名产品经理,要了解APP版本号命名规范、APP版本发布流程、APP版本升级策略、APP升级策略配置,以及APP升级流程,才能设计好APP版本的更新与管理功能。

9.1 APP版本号命名规范

市面上的APP版本号命名规范有很多,最常见的一种主要由4部分组成,即<主版本号>;<子版本号>;<阶段版本号>;<日期版本号>;<字母版本号>。其中,字母版本号共有5种——Base、Alpha、Beta、RC、Release。例如,2.0.1.200303_Release。

下面是字母版本号的定义。

● Base:此版本表示该软件仅仅是一个假的页面链接,虽然包括所有的用户界面和全部功能,但是页面中的功能都没有完整的实现,只展示了一个可视化的基础框架。
● Alpha:也称为α版,此版本主要以实现软件功能为主,不注重用户界面的设计,通常只在软件开发者内部用于产品功能的实现性验证。
● Beta:也称为β版,此版本相对于Alpha版已经有了很大的改进,消除了严重的错误,用户页面趋于完整和规范,但还存在一些缺陷,需要经过多次测试来进一步消除。
● RC(Release Candiate,发布候选版):此版本是最终Release版本之前的最后一个版本,已经相当成熟,基本上不存在致命性的Bug,与即将发行的正式版相差无几,是测试通过的版本。
● Release:此版本的意思是“最终版本”“上线版本”,是经过前面一系列的版本之后,最终交付给用户使用的一个版本。一般情况下,Release版本不会以单词形式出现在软件封面上,取而代之的是符号R。

产品正式上线后,通常省略日期版本号和字母版本号,只显示<主版本号>;<子版本号>;<阶段版本号>。图5-37展示了微信的版本号示例。

9.2 APP版本发布流程

APP的新版本打包完成后,需要上线发布并供用户下载。Android版本通常会发布到官网或Android应用商店,如小米应用商店、华为应用商店、OPPO应用商店,以及vivo应用商店等;而iOS版本只能通过应用商店来统一对用户发布。

值得注意的是,苹果APP Store的审核时间较长(3~14天不等)。如果需要Android和iOS两个版本同步发布,一般需要先提审iOS版本,再提审Android版本(Android各个应用商店的平均审核周期为一天)。等应用包上架应用商店后,再引导已经安装APP的老用户升级到新版本,应用商店不同,应用升级方式也有所不同。

9.3 APP版本升级策略

APP版本更新的核心逻辑是,用户启动APP后,对比客户端版本与服务器端版本。如果客户端版本等于服务器端版本,例如,客户端版本是v2.0.0,服务器端版本也是v2.0.0,则当前的用户使用的版本为最新版本,无须进行版本升级;如果客户端版本小于服务器端版本,例如,客户端版本是v2.0.0,服务器端版本是v2.0.1,则会执行更新逻辑,客户端会从低版本升级到最新版本。

其中,APP升级策略有4种,分别为不提示升级、弱提示升级、强提示升级和强制升级。下面将详细介绍这4种更新逻辑的设计思路与方法。

1)不提示升级

不提示升级,指当APP有版本更新时,不会以弹窗的形式提醒用户有版本更新,通常依赖用户主动检查更新。图5-38展示了微信版本更新方式,若用户选择“版本更新”选项,就会对比客户端版本会和服务器端版本。如果有新版本,则会询问用户是否要更新到最新版本。


不提示升级一般适用于规模较小的版本更新,用户对新版本的更新提示感知程度最弱,当然对用户的打扰也最弱。

2)弱提示升级

弱提示升级,指当用户启动APP后,会以弹窗的形式提示用户有版本更新,用户可以选择升级,也可以选择取消升级,如图5-39所示。

弱提示升级适用于软件版本做了较大的更新,有必要提醒用户,期望用户更新版本的场景。

3)强提示升级

强提示升级和弱提示升级的展现形式相同,都采用弹窗的形式提示用户。不同之处在于,弱提示升级只会弹窗一次,在下个版本更新前,不会再次弹窗并提醒用户升级;而强提示升级则每天都会弹窗一次,提醒用户升级。

4)强制升级

强制升级指一旦新版本发布,客户端必须进行版本升级,否则无法继续使用。强制升级也以弹窗的形式提示用户。不同于弱提示升级和强提示升级,对于强制升级,用户不能取消提示,不升级就无法继续使用APP,如图5-40所示。


强制升级一般适用于APP有重大的功能更新和Bug修复且产品侧强烈希望用户升级的场景。

以上介绍了APP版本的4种升级策略。每一种升级策略都有自己的适用场景,在实际的产品版本管理过程中,要根据产品版本的具体情况,择优选择。

9.4 APP版本升级策略配置

当我们发布一个APP的新版本时,通常需要配置历史版本的升级策略。这里的设计思路有两种,分别是历史版本维度-单量策略配置和新版本维度-批量策略配置。

  1. 历史版本维度-单量策略配置
    历史版本维度-单量策略配置指新版本发布后,针对所有的历史版本逐一配置升级策略。例如,最新发布的APP版本是v1.0.5,当前用户使用的历史版本有4个,它们分别是v1.0.1、v1.0.2、v1.0.3和v1.0.4,所以当v1.0.5版本发布时,需要针对每一个版本设置升级策略。例如,v1.0.1设置为弱提示升级,v1.0.2设置为强提示升级,v1.0.3设置为无提示升级,v1.0.4设置为强制升级。

如图5-41所示,这种设计思路的优势是可以灵活地控制任何历史版本的更新策略,劣势是设计和实现较复杂,投入产出比需要根据实际产品综合考虑。

  1. 新版本维度-批量策略配置
    新版本维度-批量策略配置指以最新版本为准,配置所有旧版本的升级策略。例如,如果最新版本是v1.0.5,那么这个版本的升级策略可以配置为强提示升级,最小兼容版本是v1.0.2。

最小兼容版本指最新版本升级逻辑支持的最小版本号,小于该版本的历史版本均采用强制升级策略。这条策略的意思就是对于所有历史版本都执行强提示升级策略,且对于v1.0.2以下的版本执行强制升级策略。

如图5-42所示,新版本维度-批量策略配置的设计思路从新版本出发,批量化地对历史版本进行策略配置。其优势是策略配置方式简单,劣势则是复杂场景难以覆盖。


这两种设计思路各有优缺点,在实际的产品设计过程中,要根据自己产品的实际情况,择优选择。

9.5 APP升级流程详解

当所有版本的升级策略都配置好后,用户打开APP,APP获取升级策略后,会先对比服务器端版本与客户端版本。如果客户端版本大于或等于服务器端版本,则无须执行升级策略,直接打开目标页;如果客户端版本小于服务器端版本,则执行升级策略。

如果升级策略是强提示升级,则先校验今天是否弹出过强提示窗口。如果弹出过,则不再弹出;如果没有,则弹出强提示窗口。

如果升级策略中有最小兼容版本,则需要判断当前客户端版本是否小于或者等于最小兼容版本。如果小于或者等于,则执行强制升级策略;否则,继续执行其他升级策略。

如果升级策略是无提示升级,那么打开目标页,同时在“手动更新”按钮处出现新版本的提示徽标。

如果升级策略是弱提示升级,则先校验历史版本中是否已经弹出过弱提示窗口。如果弹出过,则不再弹出;如果没有,则弹出弱提示窗口。

通用的产品功能设计方法相关推荐

  1. (04)System Verilog 利用函数通用总线激励驱动方法

    (04)System Verilog 利用函数通用总线激励驱动方法 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 利用函数通用总线激 ...

  2. (03)System Verilog 通用总线激励驱动方法

    (03)System Verilog 通用总线激励驱动方法 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 通用总线激励驱动方法 5) ...

  3. 如何正视自身价值和自我定位 --------从产品定价方法来看求职者自身价值的估量...

    如何正视自身价值和自我定位 --------从产品定价方法来看求职者自身价值的估量 从某种角度讲,求职者和招聘公司之间的关系,类似商品和市场的关系(都是供需/供求关系,但不是完全相同),所以个人价值( ...

  4. 一种通用的数据仓库分层方法

    0x00 概述 数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用.而目前网络中大部分可以被检索到相关文章只是简单地提及数据分层的设计,或缺少明确而详细的说明, ...

  5. 解决删除U盘时提示无法停止‘通用卷’设备的方法

    解决删除U盘时提示无法停止'通用卷'设备的方法 文章分类:JavaEye 关键字: u盘停止'通用卷' 删除U盘时提示无法停止'通用卷'设备的解决方法 安全删除U盘时,大家常常会遇到提示"无 ...

  6. 发布【规模化产品开发方法-产品线工程.pdf】

    随着软件应用的普及,企业对软件也越来越重视,不断的要求采用软件提高效率,提升技能增强企业竞争力.随着客户的增多,软件企业这时需要面对更多的客户,处理共性和个性问题.如何保证低成本.高质量.快速上市等要 ...

  7. linux日志文件存放目录,Log4j 日志文件Linux/Mac/Windows通用存放位置设置方法

    log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置) 一.场景和需求 假设我现在有3个独立的用project(暂时用maven关联起 ...

  8. c语言文件分屏显示,通用子目录文件显示方法

    通用子目录文件显示方法 在用CHKDS/V对磁盘子目录及子目录文件进行查找时,由于输出显示信息没有分屏显示,很容易错过需要的信息,并且显示信息没有标记出隐藏的子目录名及子目录文件名,这样就对进一步的子 ...

  9. 产品生命周期管理——高效的全生命周期的产品管理方法

    产品生命周期管理--高效的全生命周期的产品管理方法 &  课程背景 无论是研发.生产拟或贸易型的企业,管理的核心都是围绕如何在产品的交换(销售)环节得到更多的附加值,企业效益直接由公司产品在市 ...

最新文章

  1. 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(四):在编译时绑定扩展方法的规则
  2. csdn文章保存到本地pdf
  3. 华为手机安装系统能换鸿蒙,华为鸿蒙将全面上线,安卓系统或将被彻底替换
  4. python opencv手册_教你用Python实现5毛钱特效(给你的视频来点料)
  5. 数字IC验证学习(二)
  6. leetcode——Lowest Common Ancestor of a Binary Tree
  7. python如何定义自定义函数_python类中系统自定义函数
  8. github ssh 配置_搭建自己的技术博客系列 2:把 Hexo 博客部署到 GitHub 上
  9. 视频会议受追捧,省钱又节能
  10. 阿里云10 PB+/天的日志系统设计和实现
  11. 虚拟桌面与代理服务器的那些事
  12. 数学建模常用模型之秩和比综合评价法
  13. 单因素认证与多因素认证
  14. 基于LSTM + keras 的古诗生成器
  15. MySQL Kill出现Killed死锁处理
  16. 计算机网络进阶 ---- 网络类型 ---- 二层封装协议 ---- HDLC ---- PPP ---- pap认证 ---- chap认证 ---- 详解
  17. Deep Learning for 3D Point Clouds: A Survey - 3D点云的深度学习:一项调查 (IEEE TPAMI 2020)
  18. python实现角谷定理
  19. springboot启动提示文件不能找到问题解决
  20. 【Python习题】房贷计算器

热门文章

  1. ios visio流程图_IOS APP设计流程
  2. 是时候来一发炸裂的开场了!
  3. 第二章 随机变量及其分布
  4. 0基础快速开发口袋网盘小程序
  5. check the manual that corresponds to your MySQL server version for the right
  6. python读取csv求平均数_python列表切片读取csv数据计算导购客单价.py
  7. 互联网地图栅格比例尺(3857,4326)
  8. 无理数的无理数次幂的结果可以是有理数?(以〖√2〗^√2为例)
  9. 人工智能AI工程师职业规划指南
  10. 薛之谦一半的高潮用计算机弹怎么按,如何解读薛之谦的歌《一半》?