首页 新闻

脱离微信,在硬件设备运行小程序?小程序硬件框架大揭秘!

2017 年的微信公开课 PRO 上,张小龙谈到微信小程序的设计初衷:“我认为所有的应用程序应该是一种无处不在,但是又可以随时访问的一种状态……什么是小程序?小程序是一种不需要下载、安装即可使用的应用,它实现了触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用,应用随处可用,但又无须安装卸载。”

同时还超前预言十年后,人与应用程序的交互形式:

“也许十年后,智能眼镜成为主流设备,整个PC 电脑会藏在眼睛里,可以把屏幕投在视网膜里,不用安装应用程序,就能看到应用程序在哪里。只要当你看到任何实物,它背后的应用程序都会浮现出来,并且可以用眼睛去控制运行。”

三年过去,小程序一如张小龙提到的设计初衷,如今小程序“用完即走”的方式已深入人们的日常操作中。

2020 微信公开课 PRO 上,三岁的微信小程序交出一份亮眼的成绩单:日活用户超 3 亿,交易额超 8000 亿。但这 3 年里,微信小程序只运行在微信平台上。并未完全如上述张小龙提到的超理想状态“应用程序应该是一种无处不在”。

随着万物时代的到来,IoT 设备增长快速,是不可忽视的技术发展趋势。在今年的微信公开课上,微信推出全新小程序硬件框架(WeChat Mini-Program Framework,简称 WMPF),实现可脱离微信客户端的环境下运行小程序,支持小程序运行在各行各业的安卓系统平板电脑、大屏设备等硬件上。这可谓是跨时代的发展。

这是一项怎样的黑科技?开发者是否要重新编写一套新代码来适配?未来小程序又如何赋能 IoT设备?带着这些问题,CSDNIDCSDNnews)专访微信小程序硬件框架团队,来一探究竟。

注:本文涉及的“小程序”均表示“微信小程序”。

脱离微信也能运行小程序?这款框架太硬核!

据了解,硬件开发者只需接入小程序硬件框架 WMPF SDK APK,即可在平板电脑、大屏设备等智能硬件设备上运行小程序。但这个小程序硬件框架不是以 SDK 的形式在硬件设备上运行,而是以“壳”App的形式来容纳微信小程序的 SDK,用户或者开发者在更新时通过“壳”App来静默更新,整体“壳”App的大小约60-70M

目前 WMPF 仅支持安卓系统的设备,可接入的设备包括但不限于:

1、智慧零售:收银机/排号机/商场导航屏/自动贩卖机/点餐平板/互动广告屏幕等;

2、家用及娱乐设备:智能冰箱/儿童平板/跑步机/电视机/KTV点唱机等;

3、公共服务:医院挂号机/图书租赁设备/美术馆办卡机等;

4、办公设备:教育平板/会议终端/会议投屏等。

据小程序硬件框架团队介绍,早在小程序起步时,技术团队便同步考虑在不同环境运行小程序的问题。当时的设想是通过抽取出小程序运行的 SDK,来和小程序开发者的代码一起打包生成目标环境的原生应用,运行在不同的设备上。

“这是站在开发者的角度来思考的,一个很原始、很朴素的想法,初衷是让开发者可以没有任何顾虑的投入开发小程序。”技术团队表示。

时间划到 2018年,随着小程序生态的快速发展,团队希望能在手机之外释放小程序的能力,即如今这种通过 WMPF,在更多的智能硬件设备上运行小程序。“这和之前小龙在公开的场合上所阐述的理念是一致的。”

除了外部的硬件设备外,微信内部平台如企业微信等,也开始对支持运行小程序有了需求。

基于以上两方面的需求出发,目前该技术团队主要由两部分的人员组成:一是微信客户端内部的小程序开发团队,同时负责完成 WMPF 新功能的迭代和研发微信客户端内小程序框架的功能,保证小程序能力迭代在两端的一致。

二是小程序之外、微信在物联网领域投入预研的技术支持团队,未来他们将会在设备合法性校验、推送通道建设,以及维护外部开发者接入等方面提供更加丰富技术支持。

在目标设备上运行小程序

不同硬件设备上,如何确保小程序的安全?

需打破平台的限制,让软硬件开发者均可使用,这是一个创新的理念和技术突破。小程序硬件框架团队在研究探索的过程中,在技术上遇到众多困难:

1、如何在小程序开发者几乎不感知的情况下,在硬件设备上提供微信特有的开放能力?

原有的微信小程序由于运行在微信客户端,所以获取分享、登录和支付等微信账号身份相关的自有能力是非常容易的。但如今小程序脱离微信客户端,运行在其他硬件设备上,此时该如何获取调用微信能力?例如,一用户A的主身份在自己的智能手机里,当他在操作独立运行着小程序的、和手机完全隔离的大屏设备上时,设备上的小程序该如何知道当前操作的用户是A呢?

在参考微信现有的第三方网页扫码授权机制后,技术团队沿用了这种方式,通过在设备上拉取并显示授权二维码,配合用户扫码授权,以后台通信的方式将用户身份信息,从手机端传递到设备上,以此来解决身份问题。

将身份问题解决后,其他微信开放能力就能迎刃而解:只需要在 WMPF 上使用微信客户端里对应的访问后台接口,就能将微信的开放能力提供给没有微信客户端的环境(其他硬件设备)。

2、安全问题如何解决?

团队刚开始设计时,按照一般的做法是想将框架以 SDK 的形式提供给开发者使用,集成到他自己的App环境中,但这种形式在保证用户和小程序开发者两方的权益时会有风险。

首先,用户会认为自己在使用的小程序一定是运行在一个相对安全的微信客户端环境里,出于信任可能会提供更多个人信息给小程序。但假如以 SDK 的形式来提供接入的话,小程序以及用户提供的数据都将运行在第三方不可控的环境里。技术原理上来看,这种模式由于在同进程运行,存在着被第三方不可控环境监听的风险,进而导致可能的用户隐私数据泄露。

同样,开发者侧无法确保通过第三方环境中运行的小程序获取到的用户是不是微信的真实用户,不排除黑产灰产通过集成SDK实现运行环境,伪造、仿冒真实用户来“薅羊毛”,从而造成用户获取环节实实在在的损失。

而说到解决方法,也并不复杂。团队采用封装壳的方式,将小程序框架 SDK 装入 WMPF 来解决上述SDK模式的安全问题。

然而这样做还并不足够,在设备层面也依然存在安全上的挑战——如何确保 WMPF 所运行的设备是合法有效的?

参考手机上的做法,可以通过对硬件上有更高要求,比如说硬件需引入类似 SOTER 的机制,在类似TEE这样的安全环境中,生成或者校验签名和唯一设备ID。然而这样的方式对于更多的第三方设备开发者来说,意味着需要增加额外的硬件成本投入。所以这个解决方案并不普适。

随后技术团队尝试探索引入在线验证的方式,通过将物联网的在线认证机制引入 WMPF,以保证每台设备的合法性校验都是实时在线完成,确保每一台运行 WMPF 的设备都是安全可控的。

因为小程序里所有业务都有实时在线的特点,所以在设计验证环节时,我们也是假定了设备需要实时联网。

即使有合法设备的ID泄露,被黑产拷贝生产出一些未授权的设备,那么这些未授权设备在运行框架时一定会产生在线校验冲突——任意时刻一个合法有效的设备ID只能有一个在线运行。如此一来,就能提高门槛,避免大规模的未授权设备出现。

硬件设备的小程序入口

脱离了微信的小程序,用户该如何启动硬件设备上的小程序?是否和 App 一样,需要通过“小程序应用市场”来搜索获取呢?

小程序硬件框架团队表示,并不需要统一的应用市场,在特定场景下,第三方设备开发者自己决定“入口”是什么。在商场导购机的场景中,当用户查看商场导购机上的地图时,这地图上的每一个店铺便可能是小程序的入口。用户点击地图上某一个店铺后,便可直接进入到商家的小程序,查看相关的优惠活动信息。

对于设备开发者而言,需将原来一般的“九宫格”桌面应用换成地图形式的“小程序启动器”,在地图的每个商铺位置上,做类似手机桌面图标的小程序入口,当用户点击商铺位置时,开发者通过 WMPF 来运行对应的小程序。

如此一来,开发者只需选择适合运行在该设备的小程序,然后把这些小程序加在合适的入口上。

不同硬件设备上,小程序兼容性如何解决?

每次开发者在面对一款新工具或框架时,可能“哀怨”地想:“这又得将代码搬运一遍……”

小程序硬件框架团队表示,小程序开发者可直接将原有的那套小程序代码直接迁移至 WMPF,然后根据不同的硬件设备来调整屏幕尺寸和适配交互方式。

实际上 WMPF 会尽量保持一致性的兼容,假如硬件设备和手机的交互方式一致、屏幕尺寸比例也相似的话,小程序开发者几乎不需做任何的修改,其代码可直接运行在该硬件设备上。

否则,开发者将需调整小程序中对应的 UI 代码来适配不同尺寸屏幕的布局。假如小程序开发者之前在编写代码的过程中,已采用类似响应式UI开发的话,将会较容易适应不同尺寸屏幕的表现。

发力 IoT ,微信小程序的优势

这次在微信公开课推出新的小程序硬件框架,后续微信小程序是否全面发力 IoT 设备?

从受访者看来,IoT 覆盖的设备和场景非常大,从一个超大屏幕到很小传感器,两者均是 IoT设备。但这两个产品在技术和应用生态上完全不同的子领域,很难完全做兼容的。所以,他认为 IoT领域并不是单一的应用生态就能容纳。

而在 IoT领域,微信小程序的发力点是智能屏幕,即拥有触摸屏交互形式的设备上,“对于这类 IoT 设备,小程序是具备优势的。”

毕竟在每个新技术的传播中,最难的是建立开发者生态和应用生态的过程。

技术团队表示,原有的微信小程序已积累非常庞大的开发者数量,这是让小程序能快速地迁移到相接近的智能屏幕 IoT 领域里的巨大优势,因为无需在这个新技术领域里面重新建立起一套新的应用生态。

小程序硬件框架的三大发力点

随着 AI 技术的发展,WMPF将结合第三方语音助手和小微机器人,来给WMPF 增加语音控制小程序的能力。小程序开发者还可通过小微的平台来提供其支持的技能。

AR 技术上,将结合开发者的诉求,框架技术团队来进行相关的研发。如对于化妆镜场景,后续 WMPF 可提供和微信客户端相似的试妆能力。

谈及 WMPF 在近期的研发方向,主要有三点:

1、智能屏幕场景。在理想的预期下,期待能在智能屏幕上诞生出出色的小程序 SaaS 软件服务商和硬件的解决方案商。

2、目前 WMPF 支持安卓平台,未来希望能扩展到更多底层操作系统平台。

3、探索5G 技术下的新发展。随着 5G 技术的发展,团队相信基于 WMPF 构建的小程序在设备上的应用响应速度和更新的实时性都会变得更好。