Web API 的现状 – 访谈 John Hammink

您可能已经知道,Mozilla 正在努力 使用纯粹的开放技术实现移动开发。为此,我们正在定义一组用于访问移动设备硬件的 API,称为 Web API。Mozilla 的 John Hammink 在周一发布了一篇博客文章,概述了目前的情况。这是一个很好的机会,可以聊聊我们目前所处的位置,并询问您可以为 Mozilla 的这项工作提供哪些帮助。

1) John,您在 Web API 项目中的参与度如何?

我是首席 QA。我还承担着布道者的角色——我们需要尽早让社区参与进来,参与到测试中。更不用说围绕这些 API 构建应用了!想帮忙吗?

2) 目前有哪些 API 准备好供大家使用,人们需要做什么才能尝试它们?

我创建了一些 关于测试可用 Web API 的原子测试页面。这些 API 包括:电池、摄像头、IndexedDB、振动器和短信。更多 API 即将推出——但可能需要与其他 API 结合使用(例如,电话需要音频);而且其他一些 API 是特定于 Boot to Gecko (B2G) 的。

3) 因此,电池 API 是最早实现的 API 之一。虽然作为手机上的信息来源很有趣,但对开发者来说并不是那么吸引人。您可以想到哪些用例?也许是在运行大型 WebGL 动画之前读取电池电量,并在之后再读取一次?

也许我有一个 WebGL 模拟,或者一个需要特定功率输出或功率可用性的游戏。例如,当电量低于某个水平时,我们可以触发通知。如果这是一个生产力应用程序,也许我们希望提示用户保存他们的工作。

4) 摄像头 API,现在我们开始进入正题了!Fennec 和移动设备上对 Canvas 的支持如何?最让我感兴趣的事情是用 HTML5 制作一个 Instagram,通过修改照片来实现。

Canvas 的工作方式与桌面端完全相同。拍照——然后 JS 渲染——是用例的核心。

可以说您可以实现缩放功能,以便更详细地检查图片。另一件我们尚未尝试的事情是检查渲染后的图像的 EXIF 元数据。

5) 您将 IndexDB 作为存储本地数据的替代方案,因为它可能对文件系统造成危险。localStorage() 的主要优点是 API 非常易用。有没有可能使用一个包装器来使用 localStorage() API,但将数据存储在数据库中?

问题是 localstorage() 是同步的——这使得它易于使用,但正如您所能想象的,它会导致巨大的性能问题。由于我们的 Indexeddb 是异步 API——您无法围绕异步 API 创建同步 API 包装器。

6) 良好的振动。振动器 API 允许您使设备振动。我可以看到它非常适合游戏和通知。或者配合方向 API,告诉您何时倾斜过度。有没有办法检测振动是否已打开或关闭?我知道很多人关闭了设备振动。

我迫不及待地想看看我的名字在搜索结果中出现的次数,这要感谢这个 API。没有用于检测此功能的 API——人们推测您可以使用方向 API 推断其存在——即它会感知振动。但这因设备而异;因为并非所有设备都具有振动器。

7) 使用 JavaScript 发送短信是您提到的最后一个 API。据我了解,它正在正常工作。那里最常被请求的用例是什么?是否存在节流机制来阻止人们发送垃圾短信或群发邮件?

除了 about:config 设置 dom.sms.enabled 之外,没有特定的节流机制。它将成为一个“受信任”的 API,也就是说,我们不会将其公开给所有页面。与许多这些 API 一样,它存在固有的安全威胁——在这种情况下,例如,您最终可能会向付费服务发送短信。

8) 这都很酷。您现在希望人们做什么,他们可以去哪里获取所有这些内容来进行尝试?

查看我的博客文章,并在我的个人分享页面上尝试测试页面本身!我建议使用 最新的 XUL nightly 版本——对于短信,您需要一部带有 SIM 卡的手机和一个在博客文章中链接的特殊版本。尽情尝试!请注意,这些目前是原子 API,每个 API 代表一个单独的功能。通过 bugzilla 提出建议——并提交 bug!不用说,还要尝试将这些 API(以及其他即将推出的 API)组合到您自己的工作应用程序中。我们的挑战不仅在于了解这些 API 如何独立工作,还在于了解它们如何与其他 API 结合使用。我想说,在这个阶段,IndexDB 由于其规模和复杂性,代表了一个特殊的挑战。

帮助我们推动移动 Web 发展

如果您想查看代码,这些测试页面 在 GitHub 上可用

关于 Chris Heilmann

HTML5 和开放 Web 布道者。让我们一起解决这个问题!

更多 Chris Heilmann 的文章…