为 iPhone 开发应用程序 (Part 2)
[Updated] 各位访问者,这个系列文章写于第一代 iPhone 发布时,那时候 iPhone 3G 以及真正的 iPhone SDK 都还遥遥无期不知踪影,所以,这个系列的文章只针对当时的第一代 iPhone,与现在的 iPhone 3G 几乎没有参考价值。敬告。
小插曲:在我如火如荼地整理 ADC 上的 iPhone 开发资料并在昨天抛出了 part 1 之后,我发现……网站挂了。那种精心筹划并准备接受鲜花掌声和顶礼膜拜却发现因为一个愚蠢的原因而未果的感觉和上周末在伦敦 Tiger Tiger 俱乐部前放汽车炸弹却被人因运气而发现最后如意算盘落空的菜鸟恐怖分子一样。
在发现网站挂掉的那个第一秒,我自鸣得意地以为是被“类digg”了,不过很快发现有点不对头,之后到服务商 media temple 看了下,果然是他们出了问题。我那篇心血文章陷入了藏在深闺无人问的地步。后继报道显示,伦敦人对未遂的汽车炸弹心平气和,戴安娜演唱会照开不误,所以,网站挂就挂呗,part 2 照写。
在开始看 part 2 前, mashable 的这则消息你可能会感兴趣:8 Coolest iPhone Apps at iPhoneDevCamp。这个话题这周有空可以细说–不是戏说,谢谢。
今天又想了想 Apple 死活都不想公开 OS API 甚至是经过 SDK 包装过再提供的 API 的原因,我猜和 Apple 宣称 iPhone 采用的是“完全的 OS X”有关。我早先–并且到现在一直–认为,Apple 这个说法实在很猪头–如果哪天事实证其实我是猪头那也挺好–衡量这个说法是否靠谱,iPhone 的 OS 是不是所谓“完全的 OS X”有几个准则,其中一个是看其提供的 API。而现在 Apple 只给大家一个开发 web app 的机会从而避免了必须在开发者面前宽衣解带的尴尬,就没人能知道这个侏儒 OS X 到底是什么构成,自然也就没法 challenge 那个“完全的 OS X”的谎言了。
Microsoft 在 WinCE/Windows Mobile 中还是引入了不少桌面 Windows 的概念的,窗口,事件驱动,消息,注册表,相似的大量 API,甚至 .NET Compact(不过当然没有 MFC 和 ATL 等),即便这样 Microsoft 也谨慎或者明智地没有宣称 Windows Mobile 和桌面 Windows 有什么暧昧关系。Redmond 的工程师们太朴实了,他们不像 Apple 的家伙那样会撩拨挑逗不明就里的处男处女消费者。
继续:此后 ADC 关于 iPhone 开发的内容是页面布局,字体的东西了,好烦人,而且没有实际东西就很难写得形象,这就不罗嗦了。留心几点,iPhone 上的 Safari 不提供滚动条,也不做所谓窗口缩放(根本就没 窗口 概念)。核心是 viewport 那个矩形区域(如图)。大页面又没滚动条怎么办?当然是使出 iPhone 最炫招数,手指头拖动啦。

iPhone Safari 支持的图片类型:GIF,PNG,TIFF,JPG。前三种格式的 decoded image size 最大 8M,也就是 宽x长x4 < 8 M。GIF 则必需 < 4M。原始 JPG 图片最大可以 128M--足够了吧。
如果页面上有 form,比如输入文本框,那就要考虑弹出的软键盘--它会消耗屏幕空间,如下图。

多媒体–打住,跟最开始一样,目前看来你可没机会写什么第三方多媒体程序,这里的多媒体是仅仅指页面里的媒体内容。
第一要义是别忘了,如果是网络媒体,iPhone 的承载只有 EDGE 和 WiFi。对视频来说,码率和尺寸是最重要的,iPhone 支持 H.264/AAC。
再者,使用 reference movie,这样 iPhone 能根据当前链接是 EDGE 还是 WiFi,自动选择不同质量的内容。这种媒体包含多个 movie url,每个 url 包含一组测试内容。连接到 reference move 时,播放器只会选择最近的通过了其所有测试的 url,播放这个 url 的媒体内容,这样就保证了不同能力的设备选择合适自己的内容,在视频质量和链接速度之间取得均衡。Apple 提供 MakeRefMovie 工具。
其他内容,以及媒体制作工具自己取细看哈。从最终 Apple 推荐结果看:
为适合 WiFi 连接制作的 H.264 内容,视频可以达到 900 kbit/sec, 480 x 360,EDGE 是 64 kbit, 176 x 144。

这里有个好玩的地方大家可能意识到了:缺少 Flash 支持。这限制了媒体制作者能使用的媒体格式和播放手段,甚至进一步限制了能编写的 web app 类型–或者要实现类似功能,需要花费更多代价,所以我们只有期待 flash 支持的传闻尽快成真。
[tags]iphone, programming[/tags]
Tags: Gadget, iphone, programming, Technology

