QQ 中的 “轻应用”

发表者简介: 周蔚(arthaszhou), 腾讯专家工程师,即通产品部,平台开发组组长

导语

2015年,借着公众号“动态消息”的东风我们把沉寂多年的应用开发框架Ark(开发代号)移植到了全平台QQ中。基于新框架带来的能力,我们可以将服务以页卡的形式嵌入到消息流中,使用户在多个平台下获得一致的产品体验。QQ中因此诞生了新形态的“轻应用”。此后我们持续在完善Ark框架的应用开发能力。期望基于QQ构建一个开放的场景化“轻应用”平台,并探索未来新的互联网服务形式。

“轻应用”展示:

“轻应用”暂没有正式的名称。团队内部基于习惯把这种内嵌在QQ中的应用称为“轻应用”,蕴含应用轻小,使用轻便之意。有时候我们也把“轻应用”称为“轻App”或“Ark应用”。和QQ中承载的大量全屏体验的Web应用不同,“轻应用”更多是以碎片化的方式内嵌在QQ中。

支撑“轻应用”的Ark(开发代号)是我们自研的框架。基于使用脚本语言开发带来的优势,“轻应用”可以像Web应用一样动态更新,无需随QQ版本发布。且具备多平台(iOS、Android、Windows)体验一致性,一次开发,多平台运行(Write Once, Run Anywhere)。

“轻应用”的技术特点:

动态更新

动态更新是“轻应用”最基本的技术能力。“轻应用”既可基于app包的形式整体更新,也可基于视图局部更新。虽然以Web技术为代表的方案也可以使应用获得动态运营能力,但主要应用在全屏场景下,而“轻应用”将这一能力拓展到了消息流等新的嵌入式场景。

QQ运动基于“轻应用”提供的动态运营能力无需发布新版本QQ即可切换模版风格

轻量

对比其他技术方案(Web、React Native等),“轻应用”在加载速度和内存占用方面有明显优势。所以“轻应用”可以在不影响基础体验的情况下内嵌在消息流中使用,同时打开数十个甚至上百个视图实例。

QQ运动打开前后内存变化(iPhone 4)

为了达成上述轻量化的目标,我们在技术方案选型和实现上都向“轻”的方向有所倾斜。首先我们选择了Lua作为第一个支持的开发语言。Lua的 VM非常小,充分保证了初始化时间和内存开销的可控。而其基于寄存器的VM实现也使得脚本程序在性能方面表现优异。另外在UI部分,Ark中没有提供控件库,只是提供构建UI的原子能力。开发者可以在上层通过模板装配出可复用的UI(控件)。这使Ark核心的UI部分非常简约。而在工程实现部分,我们在开发Ark时尽可能的复用了各个操作系统提供的差异化的源生能力。虽然这导致了框架的工程实现部分会更繁琐(如增加一些中间层的设计,同样的基础模块实现多份等),但在体积控制上具备明显的优势。

可交互

消息流中的图文消息主要用于呈现静态的文字和图片内容。集成Ark后,消息内容具备了更丰富的互动能力。从而使消息流从服务入口的容器升级为了服务本身的容器,嵌入在消息里中的服务可以更短路径被用户使用。

基于“轻应用”实现的时钟/计算器/小游戏,可直接在消息流中完成交互

为了实现上述能力升级,Ark提供了丰富的基础能力API供开发者使用。同时也将部分QQ的平台能力进行了封装,使“轻应用”可以更好的融入QQ中。

界面

文本、图像、画布、输入框、布局器、控制器、模板

网络

Http、WebSocket、SSO

多媒体

音频播放、视频播放、动图(GIF、APNG)

设备

罗盘、加速度、位置

QQ

登录(OpenID)、获取用户信息、分享、打开网页&应用、扫码

随着应用开发能力的逐步完善,部分团队已经开始尝试基于Ark开发更复杂的全屏“轻应用”。

全屏方式打开的腾讯地图“轻应用”

“轻应用”升级场景化应用:

移动互联网时代,手机携带的便利性促使了场景化应用的出现和普及。无处不在的二维码以及诸多基于微信公众号的服务都很好的诠释了场景化应用的价值。基于二维码打开的Web应用(小程序)用户在吃饭、唱KTV、看电影等诸多场景中都能非常方便的用上相关的互联网服务。场景化应用的普及进一步促进了互联网融入用户的现实生活,极大提升了用户获取使用服务的效率。基于场景化应用的价值和潜力,我们期望能基于“轻应用”构建场景化应用的平台来充分发挥它的价值。但需要注意到,QQ中并不存在如微信公众号一样强大的开放生态,同时用户看到二维码也不会条件反射般的选择QQ扫码。所以关于QQ中如何建设场景化应用平台需要我们选择和微信不同的切入点和发展思路。

我们当前选择的产品方向是根据用户行为(狭义来说就是对话语义)和用户属性识别场景,匹配场景化的服务嵌入消息流使用。作出这种选择主要基于两方面因素:首先是对用户的价值。消息流是人与人沟通的核心载体。如果服务能自然的融合到消息流中,所有以沟通为起点的服务都能最短路径获取和使用。其次是技术实现上的考虑。消息流中的对话内容很多时候也正是当前用户所处场景相关的语言表达,有助于平台识别用户所处场景。

QQ中现有的场景化应用主要通过两种被动方式触发:

  • 识别用户输入内容触发应用入口,点击后在键盘区展示。
  • 识别聊天内容在消息流中插入应用入口,点击后在消息流中展示。

地图

音乐、自选股、动漫、天气

基于被动方式场景作为切入点有两个原因:一是客观上现有的语义分析技术能力不足(出于对用户隐私的尊重无法使用更成熟的服务器方案,手机设备的资源有限使技术选择有较大局限性),被动方式触发对召回率的要求没有主动搜索那么高。二是主观上策略选择,基于消息流内容的被动触发可以为服务提供方带来增量的流量。为了获得被动触发的机会,需要“轻应用”主动的标注所具备的能力。而主动标注再结合模式识别、自然语言理解等技术手段,用户行为、用户画像、服务三者均转化为可计算的数据。基于计算使用户行为动态关联到个性化的服务,这正是我们建设场景化“轻应用”平台的基础。

注:导流量是把双刃剑,过度的导流必然会伤害用户体验。所以这需要平台团队有更强的克制力。被动场景的“轻应用”接入需要尽量规避带有推荐广告性质的服务,更多局限在和场景有直接关联偏工具属性的服务上。

除了用户行为被动触发“轻应用”所需的应用能力标注以外,我们也期望所有“轻应用”的输出都能是统一的标准化语义化的元数据。结合知识图谱,所有的“轻应用”能聚合成一个有机的整体,使用户从任意场景切入使用“轻应用”,都能伴随着使用“轻应用”的行为自然的切换到下一个场景继续使用其他“轻应用”。

场景化应用并不局限于单个用户到服务的单向连接,基于IM平台自身的分享能力,可以实现多人和服务的连接关系。群投票、聚餐时点菜、AA买单、KTV点歌等等都是生活中经常发生的多人共同使用服务场景。而基于消息流内嵌“轻应用”来实现,沟通、服务交互、信息反馈都直接在消息流中完成,使用服务的整体体验更流畅更直观。

基于“轻应用”实现的游戏组队,消息流中可实时更新组队状态和组队人数

“轻应用”的未来:

数年前,使用互联网还是局限在特定地点(家、公司、网吧)使用特定设备(PC)上网。在移动互联网时代智能手机的普及打破了时空的桎梏,使人们可以随时随地的使用互联网,淡化了“上网”概念。未来随着物联网等基础设施的完善,穿戴式设备(AR眼镜)、汽车、家用电器(电视、冰箱)、家居设备等都会成为接入互联网的节点。现实世界和虚拟网络世界之间的边界会逐渐模糊。而场景化应用正是促进现实生活和互联网服务融合的重要桥梁。

基于以上判断,“轻应用”未来发展的大方向也可以基本确定。首先在表现层面,我们期望基于“轻应用”能构建标准化的容器,可在手机之外的其他设备中展示,帮助服务以碎片化的方式更方便的嵌入到各种场景中使用。其次是数据层面,我们期望能把“轻应用”标准化语义化的元数据标注拓展到设备层面,使设备能力融合到“轻应用”的服务网络中,构成完整的服务闭环提供给用户使用。

除此之外,和AI技术的结合同样也是“轻应用”未来需要努力的方向。AI可以充当现实世界和互联网服务之间的翻译,提升用户使用服务的效率。同时AI也可以承担数据过滤器的角色,解决信息过载问题。对场景化“轻应用”平台来说,AI技术的价值具体可以体现在以下几个方面:

  1. 挖掘更多数据生成精确的场景描述,给用户更个性化的服务界面。
  2. 改善人机交互方式,使用户可以更高效的使用服务。
  3. 辅助用户在使用服务时更高效的做决策。

“连接一切”是公司未来发展的大战略。“轻应用”的发展方向和这个大战略也是一致的。我们期望 “轻应用”在未来能更好的扮演连接器的角色,连接用户和服务。能让用户拥有更加便捷高效的生活。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

2 条评论
登录 后参与评论

相关文章

来自专栏DevOps时代的专栏

影响 DevOps 成功实践的15个指标

持续对特定指标的关注是衡量 DevOps 实践是否成功的关键。通过本文,我们看一下你确实需要关注的十五个指标。 你所在的组织里 DevOps 是如何践行的?...

21210
来自专栏安智客

等级保护2.0之物联网安全风险、要求、设计

谈安全必须明确边界,物联网应作为一个整体对象,主要包括感知层、网络传输层和处理应用层等要素。规范定义是:物联网系统是将感知设备通过互联网等网络连接起来构成的一个...

903
来自专栏达摩兵的技术空间

大前端团队规划蓝图

随着前后端分离,前端越来越多的承担着产品开发的工作,而且更多的涉及产品逻辑尤其是页面之间的逻辑以及关联,而后端从繁杂的页面逻辑中脱离出来,更多的是会开发微服务的...

853

尝试去定义“物联网”

Jason,我的一位朋友和同事,最近在他的博客上发布了一篇名为“ 什么是物联网 ”的文章。在他的文章中,他提出了一些潜在场景,但是我呼吁他不要去定义物联网。他试...

1.1K20
来自专栏SDNLAB

David Lenrow:ONOS社区及平台介绍

大家下午好!我是为华为工作的,但是今天,我是作为ONOS推广大师来为大家谈一下ONOS的社区以及它的平台。ONOS是一个开放的网络操作系统,我想,它可能就是像一...

3167
来自专栏后端技术探索

漫谈大型网站架构

作者介绍:陈康贤(花名龙隆),淘宝技术部技术专家,著有《大型分布式网站架构设计与实践》一书,在分布式系统架构设计、高并发系统设计、系统稳定性保障等领域积累了较为...

612
来自专栏CSDN技术头条

如何支撑DevOps微服务

本文作者Kevin Dunne是QASymphony公司战略和业务开发的副总裁,曾在Deloitte负责管理大型政府和五百强在定制软件开发方面的测试工作。本文中...

18810
来自专栏EAWorld

企业级应用的高可靠运维实践与DevOps(一)

? 很高兴今天有机会在这里与大家交流,也要感谢普元提供的交流平台和普元CTO焦总的邀请。我今天与大家分享的主题是关于企业级应用的可靠运维实践的这个话题。 ? ...

3549
来自专栏Forrest随想录

技术标准化—纷繁复杂趋势背后的规律

本来这篇是假期里整理出来,假期后准备发的一篇长文,但是因为出了个鹿晗事件,再加上,其实10.8日下午开始我也在参与处理线上的一个紧急问题,处理完也要21点多了,...

633
来自专栏SDNLAB

浅谈融合SD-RTN ——毫秒级网络加速的技术变革

2346

扫码关注云+社区