为 iPhone 开发应用程序 (Part 3)


[Updated] 各位访问者,这个系列文章写于第一代 iPhone 发布时,那时候 iPhone 3G 以及真正的 iPhone SDK 都还遥遥无期不知踪影,所以,这个系列的文章只针对当时的第一代 iPhone,与现在的 iPhone 3G 几乎没有参考价值。敬告。

此系列:
为 iPhone 开发应用程序 (Part 1)
为 iPhone 开发应用程序 (Part 2)

在开头 Part 1 说了,Apple 声称 iPhone 有和桌面 Safari 一样的 WebKit,不过在实践上,开发者还是得考虑两者实际存在的区别。iPhone Safar 提供的 feature 才是可以依赖的标准,对那些不支持的东西,Apple 承认,得想办法 workaround。

一个差别是资源方面的。所有被下载的资源,包括 HTML, CSS, JavaScript, 图象, 非流媒体,都得小于 10M。JavaScript 的 top-level entry point 执行时间必须小于 5 秒,否则会抛出异常。这个要求是为了保证用户能体验到足够好的响应性。Apple 还列出了支持的 MIME 类型(都是些媒体格式)。

另外是 iPhone Safari 和桌面版本表兄在行为上有些不同,iPhone Safari 缺省是 block 弹出窗口,不过用户可以改变这个设置。还不支持的有:
window.showModalDialog() 方法
Mouse-over 事件:这条说得过去,手持设备上,目前根本没办法 hover 东西,要么就干看,要么就触摸了。不过在 Pocket IE, NetFront 等浏览器上,焦点是可以移动的,如果把当前焦点视作 mouse over,也有得做。iPhone 上没什么按钮,无法做移动焦点,那就免谈了。
Hover styles:同上道理
Tool tips:其实也同上
Java applets:根本不支持
Flash:前面说了
Plug-in:桌面版本支持的怎么样?
Custom x.509 certificates:不知道用不用得上

不过 cookie 是支持的,SSL 实现和桌面版本一样,支持 SSL2, SSL3, TLS,RSA key 最高 4096 位。
用户发起的新建窗口也支持。可惜没上手试试的机会,不知道这样的多窗口支持如何,Windows Mobile 的 IE 是不支持的,NetFront 支持的还不错。iPhone Safari 支持最多 8 个窗口。

网页里链接的 PDF 文件能被 Safari 识别,在 iPhone 上阅读也没问题。

Part 2 里说了,Flash 目前不在 iPhone 支持范围内,这显然有那么点影响 iPhone 的可用性,让 iPhone web app 上的开发也有点微妙。除此之外,Java 同样不支持。

所有关于 iPhone 开发的东西就这么点了,说多也不多,因为本来就是基于已有技术和标准的 web app 嘛。

Apple 让 web app 成为手机应用的通用形式的目标让我想起 Adobe 正在推的 AIR,他们纵然手段差别挺大,却很有神似之处。AIR 让人使用 web 开发技术制作桌面--应该说快赶上 universal--应用,也就是在某种程序上达到让 web app 和本地应用拥有类似的功能以及 UI。
AIR 做到的是,使用一种技术,即可制作原来泾渭分明分属不同问题域的 web app 和 desktop app,AIR 也是这个问题的正解之一。Apple 推测起来也挺喜欢的这个想法,不过 Apple 的做法基本是 workaround--限制开发者只能开发 web 页面,以此充当 iPhone “里”的应用。纵然如此,iPhone 的积极意义可能在于,在满世界都急得屁股冒烟地寻找 web 2.0 正途的时候,Jobs 开口,就在手机里。

Web 2.0 需要或者推崇的属性,用户参与,个性化,面向服务,连通(最好是随时随地的),iPhone 都提供了不错的平台,当然其他手机也能提供这些,可 iPhone 硬逼着本来半推半就还在考虑是要写 native code 还是做 web service 的好汉们上了 web 的梁山,加之 Safari 和 iPhone 对 web app 的开发支持够好,开发者们得到到比 J2ME 一次开发,到处到处调试 更爽的体验后,后继的英雄们会在此汇聚得越来越多。

[tags]iphone, programming[/tags]