iBooks Author:关于 HTML widget 创建

您可以创建 HTML5 widget,以便与在 iBooks Author 中创建的图书配合使用。

iBooks Author 支持 HTML5 widget(扩展名为 .wdgt)。

若要创建 iBooks Author 的 HTML widget,请使用文本编辑器或 Web 内容创建 app 创建下列文件:

  • 主要 HTML 文件:此文件是 widget 的主体部分。可以随意为其命名,但扩展名必须为“.html”。您可将 CSS 和 JavaScript 置于主要 HTML 文件内,或将 .css 和 .js 文件添加到 widget 软件包并将主要 HTML 文件设置为载入这些文件。在这些文件中,您可以使用设计网页时会用到的任何技术或方法。通常情况下,HTML 用于定义 widget 的结构,CSS 用于提供视觉样式,而 JavaScript 用于支持交互性。
  • Default.png:这是会在页面上显示的图像,用户轻按此图像即可打开您的 widget。其名称必须为“Default.png”,首字母“D”需大写。创建 Default.png 最轻松的方式就是在 Web 内容创建 app 或 Web 浏览器中运行主要 HTML 文件时拍摄屏幕快照。当 widget 处于活跃状态时,其大小等于 Default.png 的大小,除非您在 Info.plist 中指定了不同的大小。
  • Info.plist:此文件提供了 iBooks Author 和 iBooks 运行 widget 所需要的信息。其名称必须为“Info.plist”。以下是详细信息和示例。

创建三个所需文件之后(可能还有部分可选文件,例如 CSS 或 JavaScript),请将其组合成一个 widget 软件包:

  1. 使用 Finder 创建一个文件夹,然后将文件添加到其中。
  2. 重新命名该文件夹,并将 .wdgt 扩展名添加到文件夹名称中。此操作将创建 widget 软件包,且文件夹图标将会更改为 widget 图标。

您的 widget 现已经准备就绪,可添加到 iBooks Author 中。

备注

  • 如果您的图书随附的 HTML widget 包含文件名中带有控制字符的文件,则无法将图书发布到 iBooks Store。创建 widget 软件包之前,确保该软件包中所有文件的文件名中都未使用这些字符。请勿使用自定文件夹图标。
  • 避免在 widget 软件包内包含以下名称的文件夹:
    • Resources/
    • Support Files/Resources/
    • Contents/Resources/
  • 如果您创建的是适用于配备 Retina 显示屏的 Mac 或 iPad 的内容,请执行以下操作:
    • 对 HTML、CSS 和 JavaScript 文件进行编码时,请按照标准协议操作,以创建包含 Retina (2x) 图形的网站。 
    • 您的 widget 软件包应包含 Default@2x.png 文件,其分辨率应为 Default.png 文件的两倍。您将无法在 iBooks Author 中查看此文件,但它会在配备 Retina 显示屏的 iPad 或 Mac 上的 iBooks 中显示。 
  • 如果您要在放大 widget 时以全屏幕显示,请将 Default.png 设置为 768 x 1024 像素,将 Default@2x.png 设置为 1536 x 2048 像素。如果您要以稍小于全屏幕的方式显示 widget,请将 Default.png 设置为您希望 widget 显示的尺寸(例如 600 x 900),并将 Default@2x.png 设置为该尺寸的两倍。
  • 了解有关优化通过 iBooks Author 创建的图书的更多信息。

Info.plist

基本 widget 的 Info.plist 包含部分必需键和部分可选键。以下列出了这些键及其定义,以及名为“Hello World”的 widget 的部分示例值。 

CFBundleDevelopmentRegion English 可选。指定软件包原产地的字符串。这通常对应于此软件包创建者的本地语言。 
CFBundleDisplayName Hello World 必须完成。包含 widget 实际名称的字符串,将要显示在 iBooks Author 和 iBooks 中。
CFBundleIdentifier com.apple.widget.HelloWorld 必须完成。唯一标识 widget 的字符串,与域格式方向相反。
CFBundleName Hello World 可选。包含您 widget 名称的字符串。必须与 Finder 中 widget 软件包的名称相匹配(不包括 .wdgt 文件扩展名)。
CFBundleShortVersionString 1.0 可选。提供 widget 精简版本号的字符串。通常与 CFBundleVersion 相同。
CFBundleVersion 1.0 可选。提供 widget 版本号的字符串。
Height 768 可选。表示 widget 高度(以像素为单位)的数字。如果未指定,则会使用 Default.png 的高度。
MainHTML HelloWorld.html 必须完成。提供执行 widget 的 HTML 文件名称的字符串。
Width 1024 可选。表示 widget 宽度(以像素为单位)的数字。如果未指定,则会使用 Default.png 的宽度。
IBNotifiesOnReady <true/> 可选。设置为“true”时,widget 会指示 iBooks 何时从显示 Default.png 切换为显示正在运行的 HTML widget。 

widget 完整的 Info.plist 看上去与以下内容类似:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>	<key>CFBundleDevelopmentRegion</key>	<string>English</string>	<key>CFBundleDisplayName</key>	<string>Hello World</string>	<key>CFBundleIdentifier</key>	<string>com.apple.widget.HelloWorld</string>	<key>CFBundleName</key>	<string>Hello World</string>	<key>CFBundleShortVersionString</key>	<string>1.0</string>	<key>CFBundleVersion</key>	<string>1.0</string>	<key>Height</key>	<integer>768</integer>	<key>MainHTML</key>	<string>HelloWorld.html</string>	<key>Width</key>	<integer>1024</integer>	<key>IBNotifiesOnReady</key>	<true/></dict></plist>

限制和局限性

部分功能不兼容。您不应使用以下键:

AllowFileAccessOutsideOfWidget 如果 widget 位于通过 iBooks Author 创建的图书中,则无法访问常规文件系统中的文件。
AllowFullAccess 其他访问键列表的简写,部分不兼容。
AllowInternetPlugins 在通过 iBooks Author 创建的图书中无法使用互联网插件,如 Flash。可分别通过 HTML5 <视频> 与 <音频> 元素附上影片和音频。
注:HTML widget 内的影片和音频不受 DRM 保护。
AllowJava 如果 widget 位于通过 iBooks Author 创建的图书中,则无法附上 Java 内容。
AllowSystem 如果 widget 位于通过 iBooks Author 创建的图书中,则无法访问系统命令。
Plugin 如果 widget 位于通过 iBooks Author 创建的图书中,则无法附上 Cocoa 插件组件。

iBooks Author 忽略以下键:

CloseBoxInsetX iBooks Author 和 iBooks 中的 widget 不会显示结束装饰。
CloseBoxInsetY  

 

Fonts iBooks Author widget 无法使用捆绑的字体。

影片与音频的要求

无法使用文件扩展名为“.m4v”或“.m4p”的媒体。 

建议您使用文件扩展名为“.mp4”的 MPEG-4 容器中的 H.264 视频。

对于音频,建议您使用文件扩展名为“.m4a”的 MPEG-4 容器中的 AAC 音频。

注:HTML widget 软件包中的视频和音频媒体不受 DRM 保护。

注:在某些情况下,HTML widget 中的影片和音频文件可能无法在 iBooks Author 中播放,但可在 iBooks 中播放。如果您无法在 iBooks Author 的 widget 中播放影片或音频文件,请尝试通过 iPad 或 OS X Mavericks 预览。此操作应会显示文件将如何在整本书中播放。

本地化

iBooks Author 不支持本地化的字符串和资源。因此,目标语言中应内联包括用户可见的文本字符串。

截断元素

如果元素的一侧似乎已截断(例如 <视频> 元素),则可能是由于此元素正在扩展以铺满比可见稍大的空间。请检查 #video 选择器中“width:auto”的 CSS 并对其进行更改,以反映实际尺寸。例如,如果您的 widget 包含尺寸为 960 x 540 的视频,则检查相关选择器的 CSS 并将宽度和高度明确设置为正确值:

#video {	width: 960;	height: 540;}

开发用于 iOS 和 OS X Mavericks

iOS 和 OS X 使用完全不同的输入类型,因此当您创建 iBooks Author 的 HTML widget 时,如果希望使用任何类型的控制(不是通过标准手势处理),则需要确保同时允许触摸处理和鼠标处理。

 

打开 HTML widget

根据 HTML widget 的复杂程度,读者在 iBooks 中打开 widget 时可能会在 HTML 初始化期间看到一个 flash。为了避免显示此 flash,请修改 widget,以便其告知 iBooks 何时从显示 Default.png 文件切换为显示正在运行的 HTML widget。

为了添加此可选功能,您必须修改以下三项内容:

  1. 在 widget 的 info.plist 文件中添加设置为“true”的“IBNotifiesOnReady”项目,以便 iBooks 知道此 widget 将告知它何时切换为显示正在运行的 HTML widget:
    <key>StrictUnicastOrdering</key><true/>
  2. 在 HTML 文件的“符头”部分将 widget 设置为载入 Apple JavaScript 资源库:
    <script type="text/javascript" src="AppleClasses/AppleWidget.js"> </script>
    :iPad 上已存在 AppleWidget.js,您无需将其放入 widget 软件包。

  3. 将 widget 设置为让 iBooks 知道何时 HTML 已初始化,以便 iBooks 可以通过调用(在 HTML 文件的“符头”部分包含的 JavaScript 中),从显示 Default.png 文件切换为显示正在运行的 HTML widget:
    widget.notifyContentIsReady()

重要信息:如果您选择修改 HTML widget 来避免显示 flash,请务必执行以上所有三个步骤。您必须完成所有这些步骤,才能使其正常工作。

关于发布到外部 Web 服务

如果外部 Web 服务已执行相应的 CORS(跨域资源共享)标头,则 HTML widget 只能发布到这些 Web 服务。

发布日期: