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 软件包:
- 使用 Finder 创建一个文件夹,然后将文件添加到其中。
- 重新命名该文件夹,并将 .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。
为了添加此可选功能,您必须修改以下三项内容:
- 在 widget 的 info.plist 文件中添加设置为“true”的“IBNotifiesOnReady”项目,以便 iBooks 知道此 widget 将告知它何时切换为显示正在运行的 HTML widget:
<key>StrictUnicastOrdering</key><true/>
- 在 HTML 文件的“符头”部分将 widget 设置为载入 Apple JavaScript 资源库:
<script type="text/javascript" src="AppleClasses/AppleWidget.js"> </script>
注:iPad 上已存在 AppleWidget.js,您无需将其放入 widget 软件包。 - 将 widget 设置为让 iBooks 知道何时 HTML 已初始化,以便 iBooks 可以通过调用(在 HTML 文件的“符头”部分包含的 JavaScript 中),从显示 Default.png 文件切换为显示正在运行的 HTML widget:
widget.notifyContentIsReady()
重要信息:如果您选择修改 HTML widget 来避免显示 flash,请务必执行以上所有三个步骤。您必须完成所有这些步骤,才能使其正常工作。
关于发布到外部 Web 服务
如果外部 Web 服务已执行相应的 CORS(跨域资源共享)标头,则 HTML widget 只能发布到这些 Web 服务。