更新 Flash Player 以支持 Adobe Access

Flash Player 10.1 和更高版本

重要说明:Flash Player 11.5 和更高版本集成了 Adobe Access 模块,因此无需执行更新步骤(调用 SystemUpdater.update(SystemUp aterType.DRM))。其中包括下列浏览器和平台:

  • Flash Player 11.5 ActiveX 控件,适用于除 Windows 8 上的 Internet Explorer 之外的所有平台

  • Flash Player 11.5 插件,适用于所有浏览器

  • Adobe AIR(桌面版和移动版)

这意味着在下列情况下,仍需要执行更新步骤:

  • Windows 8 上的 Internet Explorer

  • Flash Player 11.4 和更低版本,在 Google Chrome 22 和更高版本(针对所有平台)或 21 和更高版本(针对 Windows)上除外

注: 您仍可在安装 Flash Player 11.5 或更高版本的系统上安全调用 SystemUpdater.update(SystemUpdaterType.DRM),但不会下载任何文件。

要支持 Adobe Access,Flash Player 需要 Adobe Access 模块。Flash Player 尝试播放保护的内容时,运行时指示是否必须下载该模块或 Flash Player 的新版本。这样,如果需要,Flash Player 会允许 SWF 开发人员选择不进行更新。

大多数情况下,SWF 开发人员需要更新到所需的 Adobe Access 模块或播放器才可以播放受保护的内容。要进行更新,您可以使用 SystemUpdater API 获取最新版本的 Adobe Access 模块或 Flash Player。

SystemUpdater API 每次只允许进行一个更新。错误代码 2202 指示正在当前运行时实例或其他实例中进行更新。例如,如果正在 Internet Explorer 中对 Flash Player 实例进行更新,则无法对在 FireFox 中运行的 Flash Player 实例进行更新。

桌面平台仅支持 SystemUpdater API。

注: 对于 Flash Player 10.1 以前的版本,请使用早期播放器版本中支持的更新机制(从 www.adobe.com 或 ExpressInstall 手动下载并安装)。另外,AIR 安装程序处理 Adobe Access 的必要更新且不支持 SystemUpdater API。

侦听更新事件

需要对 Adobe Access 模块进行更新时,NetStream 对象调度代码值为 DRM.UpdateNeeded 的 NetStatusEvent。此值指示 NetStream 对象无法播放当前安装了任何 Adobe Access 模块的保护流。侦听此事件并调用以下代码:

SystemUpdater.update(flash.system.SystemUpdaterType.DRM)
此代码更新安装在播放器中的 Adobe Access 模块。不需要经过用户同意即可对此模块进行更新。

如果找不到 Adobe Access 模块,则会引发错误。请参阅详细的 API 工作流程中的步骤 3。

注: 如果在 10.1 之前的播放器版本中的加密流上调用 play(),则会调度其代码值为 NetStream.Play.StreamNotFound 的 NetStatusEvent。对于早期版本的播放器,请使用这些播放器支持的更新机制(从 www.adobe.com 或 ExpressInstall 手动下载并安装)。

需要对播放器本身进行更新时,SystemUpdater 对象将调度 StatusEvent,该事件的代码值 DRM.UpdateNeededButIncompatible 已调度。对于播放器更新,必须经过用户同意。在您的应用程序中,为用户提供一个用于表示同意并启动播放器更新的界面。侦听 StatusEvent 事件并调用以下代码:

SystemUpdater.update(flash.system.SystemUpdaterType.SYSTEM);
此代码启动播放器更新。

SystemUpdater 类的其他事件都记录在用于 Adobe Flash Platform 的 ActionScript 3.0 参考中。

播放器更新完成后,将用户重定向到开始进行更新的页面。已下载 Adobe Access 模块,可以开始播放该流。