文章
应用开发框架
使用 Oracle JDeveloper 和 ADF 针对 Apple iPhone 进行开发作者:Joe Huang 如今,任何开发人员都可以使用 Oracle JDeveloper 和 ADF 快速创建一个引人注目的 iPhone Web 应用程序。 2008 年 12 月发布 自 2007 年 7 月问世以来,Apple iPhone 在上市的 18 个月中已成为最热销的智能手机。它成功的关键因素在于其强大的 Safari Web 浏览器,该浏览器可使用户查看 Web 上的几乎任何页面,并完全支持 JavaScript 和 AJAX 等桌面浏览器通常具备的特性。本文将重点介绍如何使用 Oracle JDeveloper 和 Oracle 应用开发框架 (ADF) 移动开发针对 iPhone 进行了优化的移动 Web 应用程序。 面临的挑战对于使用 3.5 英寸 iPhone 屏幕访问 Web 的移动用户和使用 22 英寸液晶显示器访问 Web 的久坐用户,Web 应用程序的设计存在着较大差异。这为 Web 开发人员带来了有趣的挑战,因为现在市面上的 Web 开发工具可归为两类:
而 Oracle ADF 移动浏览器客户端可使开发人员在利用 iPhone Safari 浏览器的 AJAX 功能的同时,维持与仅能处理普通 HTML 或 WAP 2.0 内容的移动浏览器的完全兼容性。此外,它可以帮助开发人员创建为 iPhone 屏幕大小和移动 Web 使用而优化的用户界面。 Oracle ADF 中的移动开发基础Oracle ADF 通过 Oracle ADF Mobile 支持移动应用程序开发。移动支持的核心是通过 MyFaces Trinidad 组件提供的 JavaServer Faces (JSF) 移动呈现器工具包以及 Oracle JDeveloper 设计时支持。这里介绍的只是 ADF Mobile 提供的关键特性中的一些:
开发针对 iPhone 优化的 Oracle ADF 移动应用程序使用 Oracle ADF 和 JDeveloper 开发针对 iPhone 优化的移动应用程序的高级步骤如下:
将 iPhone 分辨率添加到视图编辑器视图编辑器中的屏幕分辨率列表为开发人员在设计视图时提供了可视帮助。Oracle JDeveloper 支持以下现成分辨率:240x240、240x260、240x320 和 320x240。iPhone 支持 320x480 分辨率。 要将 iPhone 分辨率添加到视图编辑器:
实现 iPhone 原有外观换肤允许 Oracle ADF Mobile 应用程序通过使用 Trinidad 组件呈现 iPhone 的原有外观。还允许相同的一组 UI 组件呈现平台原有外观,无需为不同的移动设备创建同一应用程序的多个版本。 iPhone 换肤的第一步是实施逻辑以允许 JSF 应用程序在运行时对不同的移动浏览器应用不同的样式表。Oracle ADF Mobile 应用程序通常需要支持多种设备类型,因此要定义一个可以用于多个设备的样式表是不切实际的。为此,首先应为应用程序的页面流创建 Managed Bean,其方法之一是需要检测浏览器类型并返回将用于平台的皮肤系列名称。此方法将在 Trinidad-config.xml 文件中进行调用,例如: <skin-family>#{AgentUtil.phoneFamily}
其中 AgentUtil 是 Managed Bean 的类名,phoneFamily 是将皮肤系列作为字符串返回的方法。Trinidad-skins.xml 文件中定义了各种外观系列以及 CSS 文件在项目中的对应位置。例如,对于 iPhone,可将皮肤系列定义为:
<skin>
使用 iPhone 时,AgentUtil.phoneFamily 方法会返回 iphoneFamily。这将导致使用 styles/iPhone.css 中的样式表。以下是 AgentUtil.phoneFamily 方法的示例代码段;请注意示例代码仅包含适用于 iPhone、Symbian 和所有其他移动浏览器的案例。可以根据需要添加其他浏览器。
private String IPHONE_SKIN = "iphoneFamily";
有关 agent.indexOf("<UA String>") 函数的一点说明。 此函数将对照发出请求的浏览器的 User Agent 字段使用输入 <UA String> 进行匹配。 此函数执行部分匹配 — 例如,在示例 agent.indexOf("iPhone") 中,其将参照模式“iPhone”检查浏览器的整个 User Agent 字符串。 如果匹配,即 User Agent 中包含字符串 iPhone,则该函数将返回 -1。 可以根据需要在此字段中指定尽可能长或短的字符串,只要返回可保证所需的匹配。 虽然应根据测试案例指定 UA 字符串,但此处给出了一些常用的模式:
详细的说明将发布在下一版的 Oracle ADF Mobile 开发人员指南中。有关为基于 Trinidad 的应用程序定义 CSS 文件的详细信息,请参阅本文档。 使用换肤和 Trinidad 组件实施常用的 iPhone UI 元素下一步是要实现 iPhone 原有外观,在支持常用 iPhone UI 组件创建的样式表中定义样式类。iPhone 原有应用程序中基本上有三个常用 UI 元素:导航面板列表、字段设置面板以及导航栏。下面,我们详细介绍这些元素。 导航面板列表导航面板列表将数据列表显示为单列表,其中的各行都包含来自多个列的数据。它支持的应用场景为:用户浏览汇总数据列表并选择其中的一行以显示有关该行的其他详细信息。在下方的示例中,面板列表显示了在售房屋列表。 <div class="panelBase">
有关 listingImage 等样式类的定义,请使用此链接下载示例 iPhone CSS 文件。
字段设置面板字段设置面板通常用于显示有关数据实例的详细信息,也会提供导航到显示相关详细信息的其他屏幕或视图的链接。字段设置面板的示例如下;执行以上示例后,此视图将显示有关某座房屋的详细信息,并提供查看该房屋其他详细信息的链接: <div class="panelBase">
请注意 panelBase 样式提供了此屏幕的排针背景。两个 panelCaptionGroup 控件将数据显示分为两组。最后,street 字段是一个 tr:goLink 组件,可以调用 iPhone Google Maps 应用程序。此功能将在下一部分说明。
有关 listingImage 等样式类的定义,请参阅示例 iPhone CSS 文件。 导航栏导航栏为 iPhone 应用程序提供了主要的导航机制。在前面的示例中,导航栏位于屏幕的顶部,提供了可打开另一视图的单击按钮。以下将详细介绍导航栏: <tr:panelHeader text="Details" styleClass="toolbar" rendered="true">
同样,有关 listingImage 等样式类的定义可在示例 iPhone CSS 文件中找到。
与 iPhone 服务交互移动设备浏览器通常提供一些与设备上服务的基本交互,例如电话功能和电子邮件功能。iPhone 通过添加与 iPhone Google Maps 应用程序的交互而前进了一步。使用 Oracle ADF 和 JDeveloper 来利用这些功能只需几行代码。通过轻松访问电话号码和地址等数据所在的绑定层,Oracle ADF 和 JDeveloper 使用户可以轻松地执行诸如拨打数据库字段中电话号码等操作。 电话服务iPhone Safari 在页面上内置了识别电话号码的功能,允许用户单击并拨打此号码。但是,此功能并非屡试不爽。如果电话号码只是显示在 outputText 字段中,则无法确保 iPhone 将其识别为电话号码。 要确保 iPhone 能识别出电话号码,开发人员应在 tr:goLink 组件中显示电话号码,并将 tel:添加到 goLink 的目标属性。拨打电话号码的示例代码包含在会话变量 houseDetails 和字段 AgentPhone 中: <tr:goLink styleClass="messageLink"
此外,iPhone 提供了对 RFC 2086 协议的部分支持,因此可以,例如,拨打电话号码后停顿几秒钟,然后再拨打分机号码。电话号码可能也包含字母,这种情况下 iPhone 会拨打与这些字母对应的号码。让我们来看包含伪电话号码的示例代码以更好地理解这一点:
<tr:goLink styleClass="messageLink"
这种情况下 iPhone 会拨打 1-800-873-5338,等待 2 秒,然后拨打 8。
电子邮件客户端iPhone Safari 浏览器也提供了 iPhone 电子邮件客户端接口。要调用填写了电子邮件目的地的电子邮件客户端,开发人员应使用 tr:goLink 组件来显示电子邮件字段并将 mailto:添加到组件的目标属性,例如: <tr:goLink styleClass="messageLink"
用户链接到 goLink 时,iPhone 电子邮件客户端就会启动,且会用AgentEmail 变量的内容填充 To: 字段。
iPhone 也支持其他电子邮件字段的填充。开发人员只需将下方内容添加到 goLink 组件的目标属性:
例如,下方代码会预填充电子邮件的主题、抄送收件人和消息文本: <tr:goLink styleClass="messageLink"
iPhone Google MapsiPhone Safari 浏览器会拦截对 http://maps.google.com 的调用,并转而调用 iPhone 上的 Google Maps 应用程序。也部分支持在 Google Maps 应用程序中的特定地址加一个图钉标记。加了图钉标记后,iPhone 用户可以使用 GPS 和“获取说明”功能来导航到此地址,甚至在街道级查看地址外观。 要访问此功能,开发人员应使用 tr:goLink 组件,然后使用可链接到 Google Maps 和地址的 URL 填充 goLink 组件的目标属性。Google Maps URL 应为以下格式: http://maps.google.com/maps?q=<Address_Field>
例如,下方代码会在会话变量 houseDetail.Street、houseDetail.City 和 houseDetail.Zip 指定的位置加一个图钉标记。
<tr:goLink styleClass="messageLink"
也可以使用此特性编写行车方向程序。Google Maps URL 应为以下格式:
http://maps.google.com/maps?saddr=<Start_Address>&daddr=<destination_address>
这是一个非常强大的特性;它允许 ADF 和 JDeveloper 开发人员只需几行代码即可调用行车方向功能。用户只需单击 ADF Mobile 视图上的链接即可通过 Google Maps 功能获取位置或行车方向。
结论iPhone 重新定义了移动设备的“使用简便性”;几乎所有人都可以轻松地了解并使用它,而无需大量培训。原因众所周知:iPhone 核心应用程序的用户界面与设备硬件的完美配合。任何运行在 iPhone 上的其他应用程序都需要遵守此用户界面标准,否则使用此应用程序时,用户将丧失“使用简便性优势”。在本文中,您了解了如何使用 Oracle ADF 和 JDeveloper 轻松开发用户界面,现在,所有的开发人员都可以快速地创建引人注目的 iPhone Web 应用程序。 更多入门资源以下资源将帮助您了解如何使用 ADF 和 JDeveloperto 进行 iPhone 开发:
Joe Huang 为 Oracle ADF Mobile 的产品经理。 |
||||||||||||||||||||||||||||||||||