第一部分 小程序是什么
第1章 小程序的定义
1.1 走进小程序
小程序,是腾讯公司推出的基于微信的一种全新形态的应用。2016年1月11日,在广州举行的微信公开课Pro版活动中,微信掌门人张小龙首次在演讲中透露“应用号”的存在,并表示这是一种新形态的公众号,用户关注这样的一个公众号,就像安装了一个App一样。2016年9月22日,“应用号”悄然更名为“小程序”,腾讯公司开始陆续发放内测邀请,在内测邀请函(如图1-1所示)中,微信官方写道:“我们提供了一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。”也是在当天,张小龙在自己的微信朋友圈(如图1-2所示)中写道:“什么是小程序:小程序是一种不需要下载安装即可使用的应用,它实现了应用‘触手可及’的梦想,用户扫一扫或者搜一下即可打开应用。也体现了‘用完即走’的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无须安装卸载。”2016年11月3日,小程序开始公测。在公测期间,所有的企业、政府、媒体和其他社会机构都可以登记注册小程序。此时,小程序开发完成后,可以提交审核,但是不能发布让大家公开使用。最终,微信小程序在2017年1月9日正式推出,引起了用户的高度关注。有意思的是,这一天正是苹果公司发布第一代iPhone的十周年纪念日。iPhone的发布和iOS生态圈的建设改变了整个互联网,小程序选择在这一天发布,也被视为吹响了向传统应用挑战的号角。
图1-1 微信小程序内测邀请函
图1-2 张小龙朋友圈
因此,小程序可以视为一种新形态的应用。相比于已有的嵌入在微信浏览器中的HTML5网页应用,它拥有更高的系统权限,能访问更多的手机硬件信息,同时也拥有更加贴近于系统原生应用的交互和操作体验;相比于系统原生应用,它不占用手机的空间,无须安装和卸载,实现了应用“触手可及”和“用完即走”的梦想。
1.2 小程序与微信公众号
小程序和微信公众号都是微信生态圈(如图1-3所示)的重要组成部分。从定义上来说,小程序和微信公众号属于并列层级,它们互不干扰,可以说是两套几乎完全不同的体系,但是鉴于微信强大的用户数量,微信公众号和小程序之间又有一定互相转化的空间。它们之间的区别与联系可以从获取方式,功能特性和入口三个方面进行比较。
图1-3 微信公众平台体系
1.2.1 获取方式
和微信公众号不同的是,小程序主要关注在特定场合解决特定需求。为了尽可能地减少对用户的打扰,小程序没有“关注人数”这样的指标,没有“粉丝”这样的概念,也不能向用户发送任何推送消息,可以查看的只有页面访问量。功能理念不同,使小程序在获取时和微信公众号有所不同。一般来说,获取小程序和微信公众号,主要有以下几种途径。
1.通过搜索获取
直接搜索小程序和微信公众号的名称是比较直观的方式之一。微信允许用户对微信公众号进行模糊搜索,即只需输入部分名称,即可查询到所有名称中包含用户查询内容的全部微信公众号。小程序上线之初,只支持部分模糊查询,也就是说,如果没有在搜索时完整地输入一个小程序确切的全名,用户将无法获取任何小程序的查询结果。但是在部分情况下,某些特定的小程序也能仅通过查询名称中的部分内容而显示出来。例如,输入关键字“小程序”并不能查询到名为“小程序示例”的微信官方小程序,但是输入“京东”,却能查询到所有名称带有关键字“京东”的小程序,如图1-4所示。这样严格的关键字限定,一方面,是为了达到“触手可及”的目标,因为小程序设想的应用场景是,在用户不需要的时候就不会去搜索使用小程序,而在用户线下真正需要时,只需扫描身边的二维码即可打开相应小程序,无须主动搜索;但另一方面,在线下小程序二维码还没有大面积推广时,这样的限定为众多抱着尝鲜的想法去获取小程序的用户带来了不便,并不利于在第一时间吸引用户使用小程序。
图1-4 小程序模糊搜索
随着微信的更新,在微信6.5.4版本中,小程序已支持模糊搜索,直接搜索任意关键字,即可查询到相关的小程序,并且小程序在搜索列表中还会更加优先地显示。
2.通过二维码获取
微信公众号和小程序都可以通过扫描二维码获取。二维码识别有两种途径,一种是通过“扫一扫”功能,直接扫码,另一种是长按二维码图片,在弹出的菜单中选择“识别图中二维码”。
微信公众号的二维码用这两种方式均可识别,操作后即可进入相关公众号的简介页面;小程序的二维码扫码规则经过了几次修改,在小程序推出之初,只能通过点开“扫一扫”,使用相机扫描二维码,识别进入,随着后续的更新,从微信6.5.6版本起,用户也可以直接对小程序的二维码图片进行长按识别操作了,如图1-5所示。这无疑更加方便了小程序的传播,也更加凸显了二维码在整个推广过程中的重要地位。随后,在微信6.5.7版本中,微信推出了“小程序码”。“小程序码”是小程序的专属二维码,它将原来的正方形二维码,变为了更为圆润、活跃的圆形二维码,如图1-6所示。“小程序码”使用了微信自己的编码协议,只有微信才能识别扫描,进一步加大了微信对小程序入口的管控能力。
图1-5 长按识别二维码操作
图1-6 小程序码
3.通过好友分享获取
小程序可以被推荐给好友或者聊天群,如图1-7所示。小程序的某个单独的页面(如果页面允许)也可以分享给好友或者聊天群,如图1-8所示。但是,不像微信公众号的文章可以分享到朋友圈,小程序本身也好,某个小程序内的某个特定页面也好,都是不允许分享到朋友圈的。小程序的分享,不仅仅是一个传播,在很大程度上,还希望能带来一种全新的协作方式。如果是在一个群里面,用户启动了分享的小程序,小程序拥有每个人的登录状态,大家又是访问同样的任务,那么开发带有协作能力的小程序就是可行的。小程序不能分享到朋友圈的限定,也是最大限度避免干扰不需要使用相应小程序的人,从而营造一个健康的微信生态环境。
图1-7 分享一个小程序给好友
图1-8 分享某个小程序页面给好友
4.通过微信公众号进入小程序
微信公众号自推出至今,凭借其丰富的内容和广大的订阅用户,俨然成了自媒体的象征。一般来说,一个比较成熟的微信公众号,往往有固定的受众群体,而这类群体,无疑是将其转化为小程序用户的首选。因此,小程序和微信公众号也有着不少关联,从而吸引用户使用。
(1)关联微信公众号和小程序
为了扩展小程序的使用场景,方便用户使用小程序,微信公众号可以关联小程序,使用户直接从微信公众号进入小程序。
关联规则如下:
·公众号可以关联不同主体的3个小程序;
·公众号可以关联同一主体的10个小程序;
·同一个小程序可关联最多3个公众号;
·所有公众号均可关联小程序。
已关联的小程序可被使用在公众号的自定义菜单、模板消息等场景中,运营者可以登录公众平台,在“公众号设置→相关小程序”中关联小程序,如图1-9所示。
图1-9 关联小程序操作
关联成功后,在公众号的简介页面(如图1-10所示)及小程序的详情页面(如图1-11所示)中,可以看到关联的公众号或者小程序。
图1-10 公众号关联小程序
图1-11 小程序关联公众号
在公众号关联小程序时,还可以选择给粉丝下发通知,粉丝点击该通知就可以打开小程序(如图1-12所示),且该消息不占用原有群发条数。
图1-12 公众号关联小程序通知
(2)将小程序添加到公众号菜单栏
公众号可将已关联的小程序页面放置到自定义菜单中,用户点击后,即可打开该小程序页面。公众号的运营者可在公众平台上进行设置(如图1-13所示),也可通过自定义菜单接口进行设置。
图1-13 将小程序添加到公众号菜单栏中
(3)通过公众号模板消息打开相关小程序
公众号已关联的小程序的页面可以配置到公众号的模板消息中,用户点击公众号下发的模板消息,就可以打开对应的小程序页面。
(4)将小程序添加到公众号群发文章中
为了方便用户在阅读文章时使用公众号提供的服务,在公众号群发的文章中支持添加小程序卡片,如图1-14所示。公众号群发文章只能添加该公众号已关联的小程序,在添加时可以自定义小程序卡片的标题和图片,指定小程序打开的页面。目前所有公众号的群发文章均支持添加小程序卡片。用户在阅读文章时,只需点击卡片即可打开对应的小程序,如图1-15所示。
图1-14 公众号文章支持添加小程序
图1-15 群发文章中的小程序卡片
通过以上几种方式,可以方便地从微信公众号中进入小程序,进一步加大小程序获取的便利程度,使更多的用户能从一个已经比较熟悉的环境(微信公众号)中,更快速、方便地接触新事物。
1.2.2 功能特性
目前来说,微信公众平台的账号有服务号、订阅号、企业号和小程序4种类型。其中,订阅号主要偏向于为用户传达资讯(如报纸杂志);服务号主要偏向于服务交互(如银行、114等);企业号主要用于公司内部通信;小程序则专注于面向产品和服务,各开发者都可以按照自己的需求设计和开发小程序,为用户提供相应的功能。
在实现定制功能的技术层面,服务号、订阅号主要依靠微信内置浏览器通过访问网页的形式实现。这种方式只是将传统网站中的网页做了移动端的适配,而小程序则是通过WebSocket双向通信(保证无须刷新、即时通信)、本地缓存(图片与UI本地缓存降低了与服务器的交互延时),以及微信底层技术优化实现接近原生应用软件的体验。系统权限方面,微信小程序能够通过微信获得更多的系统权限,如网络通信状态、数据缓存能力等。这些改进,使小程序拥有比公众号内嵌的基于HTML5网页的应用更好的使用体验和更加丰富的功能。
1.2.3 在微信中的入口
考虑到服务号、企业号、订阅号和小程序不同的功能特点,它们在微信中显示的地方也有所不同。服务号每个月只能群发4条消息,虽然限制了推广信息的发送次数,但是它和用户的聊天界面在同一个层级(如图1-16所示),增加了用户点击的概率;企业号作为企业内部的管理平台,不承担推广宣传任务,为了将通知消息等及时送达,也是和用户的聊天界面处于同一个层级;订阅号凭借其较低的注册门槛,以及每天都能发送1条推送的便利,成了各宣传平台最主要的注册账号,但是,为了避免过多的推送消息干扰用户,所有的订阅号都被放在了“订阅号”的文件夹中,只在用户的聊天界面占用一个对话框(如图1-17所示),如果用户没有关注过任何订阅号,那么这个“订阅号”对话框也不会出现在微信聊天界面中;同订阅号一样,如果用户没有使用过小程序,小程序在微信中也没有固定的入口,当用户通过搜索或者扫描二维码使用过小程序后,进入微信底部的“发现”栏,点击“发现”栏最下方出现的“小程序”选项(如图1-18所示),就可以看见所有自己曾经使用过的小程序了。
图1-16 服务号在聊天一级目录中
图1-17 订阅号被包含在“订阅号”二级目录中
图1-18 小程序在发现栏中
1.3 小程序与App
小程序是以“应用号”的名字第一次出现在公众的视野中。然而,由于苹果公司对“应用”两个字的限制,准备推出“应用号”的微信没能在App Store通过审核。由此可见,小程序对传统应用的冲击不小。对于Android用户来说,可以在微信中选择将小程序发送到桌面,将小程序发送到桌面后,小程序在桌面以图标的形式存在,通过点击图标就可以不用打开微信而直接运行小程序。这样的操作方式,使小程序更像系统的原生应用。小程序一经发布,也被外界广泛评价为传统手机应用的一场革命。那么,小程序和手机系统原生软件到底有什么区别?有了小程序,是否意味着传统手机应用不再必要了呢?下面的介绍可以简略地解答以上问题。
1.3.1 运行原理
小程序基于微信运行,系统原生应用则直接运行在手机操作系统上。手机操作系统提供了统一且完整的接口来访问手机的硬件资源,通过这些接口,系统原生应用能有较高的权限和自由度来调用系统的硬件资源,相应地,它们也会占用系统空间。小程序则借助于微信,使用微信专门设计的框架,通过微信提供的接口,由微信这个系统原生软件与手机操作系统进行交互,它们之间的关系如图1-19所示。
图1-19 小程序系统层级
微信赋予小程序的这些权限,使小程序有一定的访问手机硬件资源的能力,如读写缓存、查询手机网络状态、使用重力感应等。这使运行在微信内部的、类似网页应用的小程序拥有了可以媲美系统原生应用的流畅度。至于小程序究竟是怎么运行在手机上的,将会在本书第3章着重介绍。
1.3.2 开发推广难度
据统计,一款完善的双平台系统原生应用软件平均的开发周期为3个月,而小程序的平均开发周期为2周,仅为系统原生软件的1/6。开发周期的缩短,带来的不仅仅是开发成本的降低,更是方便了应用的快速改进并不断适应新的用户需求。
据2016年瑞典电信设备制造商爱立信预计,到2022年,全球智能手机注册用户数量将达68亿,从而推动移动数据流量达到目前的8倍。各种各样的智能手机设备,给系统原生软件开发者带来的是令人头疼的兼容和适配问题。除手机硬件的差别外,手机系统的版本不一也是一个很大的问题。要想开发一款覆盖两大智能手机平台所有机型的软件,细节上的调试和优化将会花费相当多的时间。而对于微信小程序来说,开发者只需面对一个平台——微信进行开发即可,不需要考虑不同设备和操作系统之间软件展示页面和实现功能的区别。在这一点上,小程序将会节省大量的开发时间,从而让开发者可以有更多的时间去思考如何更好地满足用户需求。
除在开发过程中更为简单统一和节省时间外,小程序在发布时也更加方便。传统的系统原生应用软件,对于iOS平台还好,对于Android平台来说,由于国内没有统一的Android应用商店,开发者往往需要向十几个甚至几十个应用分发市场提交材料,接受应用分发市场的审核后再进行发布。而这里,各大应用分发市场需要的材料和审核的规则不统一,使开发者在发布Android应用时,过程相当烦琐。而小程序只需要提交到微信公众平台进行审核,审核通过发布后,所有使用微信的用户都能使用自己开发的小程序。相对而言,小程序在发布时能简化很多步骤,节约大量时间。
在应用推广的过程中,相较于系统原生软件需要用户下载各种大大小小的安装包,在没有无线网,用户又不愿意花费流量下载的情况下,小程序凭借其无须安装的特点,使用户更加愿意使用。而且,小程序有更为方便的分享方式,如果一个小程序足够有趣,那么它很容易在朋友之间进行传播,进而获得更多的用户数量。
需要注意的是,随着移动互联网和智能手机多年的发展,原生软件的市场已经趋于饱和,几乎所有的领域都已被覆盖,而小程序的市场则是一片蓝海,在新的使用场景下,还有很多瓜分市场大蛋糕的机会。对于各类初创团队来说,小程序是一个可以考虑的选择。
1.3.3 使用体验
对于普通的消费者而言,无论使用小程序还是系统原生软件,如何在硬件条件有限的情况下最优地实现自己的需求才是他们最关心的。
在获取方面,系统原生应用需要在相应的应用市场下载、安装后才可以使用。这不可避免地会占用手机的内存空间。随着人们使用手机产生的数据越来越多,如果手机本身的存储空间不够宽裕,那么很快就会出现因空间不足而不能再安装新应用的尴尬。而小程序则几乎不占用系统空间,随手可得,用完即走,不用担心小程序驻留在手机中消耗手机资源的问题。小程序在硬件资源有限的情况下,给了普通用户另外的一个选择。
在功能方面,系统原生应用能实现完整的功能,小程序则仅限于使用微信提供的接口。目前而言,小程序完整地覆盖了购物、出行、饮食、资讯浏览等常见使用场景,基本能满足普通用户的日常需求。但是对于一些对动画和展示要求较高的应用,暂时还无法使用小程序实现,如大型3D游戏、模拟动画渲染等。
在安全性方面,由于接口功能有限和微信的审核机制,小程序比系统原生应用软件要好一些。这一点,尤其是Android用户可能体验得更为深刻。由于Android的开放性,加上国内对Android系统原生软件的审核规则不一,一些不良的Android系统原生软件往往会给用户带来隐私泄露、资费消耗等损失。而小程序被限制不能推送消息,也就不会有广告或者垃圾营销信息打扰用户,而且它也不会在后台偷跑流量或者进行一些涉及手机系统安全的操作。用户使用小程序,能使手机的负担进一步减轻。
在展示效果方面,小程序虽然不如系统原生应用那样有充足的自由定制页面,但是相比于网页,可以说进步了不少。目前,小程序已经达到可以媲美系统原生应用的流畅程度,用户将小程序发送到桌面生成相应图标后,就和使用一个独立的软件无异。由于微信小程序的限制,小程序的整体风格相比于系统原生应用软件更加统一和简约,能带给用户一致的视觉体验。