HTML5 素材资源与原生广告

移动应用讨论

迈克·马赫莫夫 (Michael Mahemoff)
Michael Mahemoff

简介

移动应用和 HTML5 是目前最热门的两项技术,两者存在大量重叠。Web 应用可在移动浏览器中运行,并且还可作为原生应用重新打包为各种移动平台上的原生应用。随着支持的平台数量众多,再加上移动浏览器的强大功能,开发者纷纷选择使用 HTML5 作为“一个编写、运行多个”的解决方案。但这真的可行吗?仍然有令人信服的理由选择原生,并且许多开发者的确正在走这种方向。本文中讨论了原生广告和网络广告。

功能丰富性

要点:原生代码可以发挥更多作用

我们可以将移动功能分为两个维度:应用本身的体验以及它接入设备生态系统的方式(例如,对于 Android 而言,这是指 widget 和通知等功能)。原生广告在两个方面都表现出色。

在应用体验方面,原生应用具有更多功能。他们可以轻松地获取支持滑动事件(甚至多触摸)的平台。它们通常可以在按下硬键时执行操作,例如 Android 的搜索按钮和音量控件。他们还可以使用硬件,例如 GPS 和摄像头。并且会在获得用户许可后,提供对操作系统的无限制访问。只需尝试使用 HTML5 检测剩余电量即可!

不过,它不只是提供应用内体验。像 Android 这样的操作系统为应用提供了不同的方式,使其与用户(实际上是与其他应用)互动。首页上有活跃的 widget。您有通知,这些通知显示在设备的状态栏中。而且,您可以使用 intent,让您的应用能够宣称自己提供其他应用可能偶尔需要的常规服务。

要点:原生功能可以增强,网络仍在不断追上

毫无疑问,HTML5 应用会无法实现许多应用内功能。无论您的 Web-fu 技能有多高,如果您的应用卡在没有相机 API 的沙盒中,肯定也很难迅速上手!幸运的是,您不必局限于该沙盒中。如果您确实需要使用 Web 应用拍摄照片,则可以创建一个原生应用,该应用带有嵌入式 Web 视图,能够提供大部分界面。开源 PhoneGap 框架的运作方式就是这样:它通过将原生功能公开为网络服务,而网页视图使用标准网络 API 调用这些原生功能,从而填补了空白。在构建此类混合应用时,您还可以接入这些平台功能,例如 widget、通知和 intent。

混合使用原生应用和 Web 应用并不是理想的解决方案。它增加了复杂性,仅适用于封装为原生应用的 Web 应用,而不是通过移动浏览器访问的传统网站。但可能不需要很长时间。Web 标准发展迅速,现代移动浏览器也在与时俱进。例如,离线存储、地理定位、画布图形和视频/音频播放都得到了现代智能手机的广泛支持。甚至开始支持相机 - 从 Android 3.1 开始,已可以采用网络标准拍摄照片和视频。最新的 iOS 浏览器支持使用 WebSocket 进行双向流式传输以及设备屏幕方向检测。

整体而言,移动设备正在发展演变。而网络也是在快速发展演变。仅在桌面浏览器领域,就有五大浏览器供应商在飞速完善标准和增加功能。虽然将这些功能移植到移动设备并非易事,但其中许多功能都已引入到移动浏览器中。

原生广告是一个快速发展的目标,但网络正在缩小与目标之间的差距。

性能

要点:原生代码的运行速度更快

原生应用无需处理 Web 运行时障碍。它们接近于金属状态,并且可以利用 GPU 加速和多线程等性能提升器。

要点:如今,Web 运行时的速度显著提高,而且大多数应用根本不需要这种速度

毫无疑问,网络近年来变快了。V8 是 Chrome 附带的 JavaScript 引擎,在发布时就实现了 Web 性能方面的重大发展,之后,其速度加快了:

V8 效果图表

图形渲染引擎也加快了网页加载速度,现在硬件加速也开始出现。看一下硬件加速画布提供的减速:

硬件加速画布图

此外,新的 Web Workers API 使多线程成为可能,现代 Web 开发者还可以调用一系列性能优化库和经过充分研究的性能优化技术。虽然大多数网站最初都是在桌面版网站上起步的,但它们仍然与移动设备相关,并且对移动设备的关注度越来越高,例如性能大师 Steve Souders 拥有专门介绍移动性能工具的页面

并非所有桌面平台先进技术都已应用于所有移动平台,但趋势表明它们正在走向发展。还需要注意的是,大多数移动应用都不是前沿的 3D 游戏,而基本上都是基于信息(新闻、邮件、时刻表、社交网络等)的。通过移动设备访问一些网站(例如 Gmail、Amazon、Twitter),即可确定移动网络性能足够高。对于游戏,使用 2D 画布就可以构建基本的游戏,而 WebGL 已开始在移动设备上推出 - 请参阅 Firefox 4。在普及之前,有越来越多的框架(例如 ImpactJS)将 WebGL 应用编译为能够利用 OpenGL 的原生应用。

开发者体验

要点:原生广告更易于开发

原生应用使用强大的编程语言(例如 Java、Objective C、C++),这些编程语言专为复杂的应用开发而设计,并且拥有良好的过往表现。这些 API 是从零起步设计的,旨在支持手头平台。您可以在提供目标设备的近似表示形式的桌面模拟器中轻松调试应用。

浏览器和运行时的多样性使得 Web 开发特别麻烦。当应用运行时,无法保证功能 X 可用。即便如此,浏览器是如何实现的呢?标准有待解释。

要点:网站开发通常更容易,尤其是在定位到多种设备的情况下

我们先来讨论核心技术。诚然,网络标准最初是在一个时代构想的,当时网络从根本上讲是文档而不是应用,而且在短短 10 天内构建和部署了 JavaScript!但事实证明,这些模式比想象的能力要强得多 - Web 开发者已经学会利用有益的方面并调整不好的方面,而且对可扩缩设计便理解了相关模式。此外,相关标准并未一成不变,并且 HTML5、CSS3 和 EcmaScript Harmony 等努力都提升了开发者体验。您是更喜欢 C++、Java 还是 JavaScript,这只是宗教争论,还取决于您的旧版代码库。但现在,我们肯定可以将 JavaScript 作为一种严重的竞争性因素

与浏览器/运行时碎片化相反的是,所有这些环境一开始都存在。使用 Java 开发 Android 应用,并且需要完整移植到 Objective C 来支持 iOS。只需开发一次 Web 应用,它就可以在 Android 和 iOS 上运行,更不用说 WebOS、BlackBerry、Windows Mobile 等等,理论上也是如此。在实践中,如果您真的想要获得良好的体验,则需要针对每个平台进行调整。但对于大多数移动操作系统(有不同的版本和不同的设备),您也必须在原生环境中执行此操作。

好消息是,网络上一直存在“碎片化”现象,并且有一些众所周知的技术可以处理这种问题。最重要的是,渐进式增强的原则要求开发者先针对基本设备开发应用,然后在可用时添加针对特定平台的炫酷功能层。功能检测这一宗旨也很有用,最近,我们获得了 Modernizr 等的库支持来支持自适应设计。通过明智地利用这些技术,您可以将广告覆盖面扩展到绝大多数设备,甚至包括老式“非智能手机”,甚至包括手表和电视等外形规格的设备,而不考虑品牌和操作系统。请观看 2011 年 Google IO 大会上的多界面演示,我们在该演示中针对不同的外形规格(非智能手机、智能手机、平板电脑、桌面设备、电视)使用了由逻辑和标记构成的通用代码库。

外观和风格

要点:原生广告与平台的外观和风格相契合

外观和风格是所有平台的决定性特征之一。用户希望控件以一致的方式呈现和操控。有些习惯用语因平台而异,例如,当用户“长按”(持续轻触某个元素几秒钟)时会发生什么?平台具有针对此类用途的标准习语,您无法通过单个 HTML5 应用满足所有要求。

此外,平台外观和风格由平台的原生软件库编排,其 widget 封装了用户期望的外观和风格。只需使用原生工具包,您就可“免费”获得很多预期的外观和风格。

Counterpoint:网络有自己的外观和风格,您还可以为自己最关心的平台自定义网页界面

如上一部分中所述,Web 开发的方法是编写一个基本的“一刀切”版本,然后逐步对其进行增强。虽然增强通常基于功能,但您也可以通过定位您最关注的平台来增强性能。这是一种“浏览器检测”,有时会遭到网络社区的不满,这主要是因为市面上可能出现的浏览器太多了。但是,如果您确实查看两三个优先级非常高的平台,并且愿意付出额外的努力来与原生备选平台竞争,那么这可能适合您。

就基准版本而言,Web 具有自己的外观和风格,我们甚至可以说,每个移动平台都有自己的“Web 外观和风格”(由默认浏览器和 Web 运行时确定)。“网络外观和风格”可能对用户来说没有问题,事实上,这种外观可让您与桌面浏览体验以及用户可能使用的其他设备上的体验保持一致。此外,许多成功的应用根本不支持原生外观和风格。对于游戏(您最喜欢的移动游戏是否遵循您的移动操作系统的外观和风格?),甚至较为传统的应用也是如此(例如,查看您所选平台上更受欢迎的原生 Twitter 客户端),您会发现各种各样的界面机制在发挥作用。

曝光度

要点:原生应用更容易被用户发现

Android 的 Market 和 Apple 的 App Store 等应用分发机制近年来非常受欢迎,是整个移动行业的主要驱动力。任何开发者都可以将其原生应用提交到 Marketplace,在这里,用户可以通过浏览、搜索和获取推荐来发现该应用。不仅如此,如果您做得很好,光亮的评分和评论也会说服用户按下最重要的安装按钮。

要点:实际上,Web 应用更容易被用户发现

网络无疑是有史以来最具曝光度的媒介。在这个简短网址中,我们(至少在理论上)为在网络上发布的所有内容(包括在标准网站上发布的所有应用)提供了唯一标识符。通过搜索引擎,您可以轻松地发现内容和其他网站可链接到这些内容,包括与移动购物平台类似的 Web 应用的目录。事实上,任何人只要在电子邮件和社交网络消息中链接到 Web 应用,即可与好友分享 Web 应用。也可以通过短信发送链接,这样移动用户将能够点击链接,并在设备的浏览器中启动应用。

我们目前还没有可供用户对应用进行评分和评论的市场,但这也在发生变化。继续阅读...

创收

要点:原生广告可以用来创收

“6 岁在午餐时间制作应用,每本 3 美元销售十亿份。”最近您经常看到这个问题,所以大大小小的开发者难道会选择移动市场来变现。移动平台提供了多种途径,供开发者直接为应用收费。最简单的方法就是一次性付款,永久解锁应用。某些平台中还提供了应用内付款和订阅机制,这些机制紧密集成在一致且安全的机制中。这些新付款方式使开发者能够将热门应用转化为长期收入来源。

除了应用付款之外,您还可以使用传统网站模式(例如广告和赞助)创收。

要点:通过网络获利总是有可能的,并且机会在不断增加

如果没有充足的创收机会,网络就不会成为现代工业的发动机。虽然直接的“按用量付费”机制尚未普及,但基于订阅的“软件即服务”解决方案确实已可用于各种领域。例如 Google Apps、37Signals 的产品系列以及各种电子邮件服务的付费版本。此外,直接付款并不是从 Web 应用中获利的唯一途径。包括在线广告、联属营销链接、赞助广告和与其他产品和服务的交叉推介。

话虽如此,但对于 Web 开发者而言,阅读标题并体验一丝购物欲望是完全合理的。您无法向原生市场提交网址,那么 Web 开发者应该怎么做?您要做的是创建一个原生“封装容器应用”,针对您要定位的每个平台,创建一个仅包含一个网页视图的空原生应用。在网页视图中,您可以嵌入真实的应用。然后,您只需将这些应用提交到各个购物平台(希望这款应用可以带来资金!)。如今,主要市场中可能有数以百计(乃至数千个)基于网络的应用,其中一些应用被操控得非常巧妙,以至于我们甚至都不知道它们的 Web 应用。

缺点在于,需要对每个平台进行交叉编译。PhoneGap 等现有框架可在以下方面提供帮助。更棒的是,目前有 PhoneGap Build 和 Apparatio 等网络服务正在开发中。将这些网站指向您的代码库,然后系统会弹出一个 Android 应用、一个 iOS 应用等等...供您提交到相应的商店。无需在计算机上安装原生 SDK;构建所有这些原生应用只需要一个代码编辑器和一个网络浏览器。

市场是否直接支持 Web 应用,并且不会产生原生封装 Web 应用的所有开销?还不确定。我们确实知道,Google 去年推出了 Chrome 应用商店。尽管它仅适用于桌面设备,但 Chrome 应用商店引起了其他浏览器供应商的兴趣,并总体上已成为 Web 应用目录(包括一些专门针对移动设备的尝试)发展趋势的一部分。对网店的概念尚处于早期阶段,但迹象表明成效良好。

总结

应该在这里宣布胜出者,但目前还没有明确的胜出者。有些应用最适合原生应用,而有些应用则最适合 Web 应用。Web 堆栈可以说有着更大的发展势头,但在功能和执行质量方面,原生应用也在快速发展。除非 Web 技术在大多数移动操作系统中已成为一等公民,否则原生技术将始终是重要的考虑因素。

本文中提及的一种技术是混合应用,对于某些开发者来说,这可能是最佳的折衷方案:在可能的情况下使用 Web 视图,在不可能的情况下采用针对具体平台的原生组件。

如果您确实要选择使用 Web 路径,请留意 Web 标准和渐进式增强原则。Web 是一项技术,知道如何针对周围的众多设备和操作系统作为目标平台。无论您选择称之为“碎片化”还是“多样性”,网络拥抱它,您的开发者也可以从现有的所有技术中受益。