在清单文件中定义存储区
与 local
和 sync
存储区不同,您需要以
JSON
架构的形式声明 managed
存储区的结构,Chrome
浏览器会严格地检验。该架构必须存放在清单文件 "storage"
键下
"managed_schema"
属性指定的文件中,声明扩展程序支持的企业策略。
策略与选项类似,但是是由系统管理员而不是用户配置的,允许您预先为组织中的所有用户配置扩展程序。有关 Chrome 本身的例子,请参见 Chrome 浏览器对策略的处理方式。
策略声明后,可以通过 storage.managed API 读取。强制实施管理员配置的策略是扩展程序的职责。
示例 manifest.json
storage.managed_schema
属性指定扩展程序中包含策略架构的文件。
{ "name": "我的企业extension", "storage": { "managed_schema": "schema.json" }, ... }
Chrome 浏览器会从下层操作系统加载这些策略,对于已登录的用户还会从 Google Apps 加载策略。每当检测到策略更改时就会产生 storage.onChanged 事件,如果扩展程序使用事件页面的话,还包括浏览器不在运行的时候。您可以在 chrome://policy 检查 Chrome 浏览器加载的策略。
架构格式
Chrome 浏览器对 JSON 架构格式还有另外一些要求:
-
顶层架构的类型必须为
object
。 -
顶层
object
不能包含additionalProperties
,声明的properties
为该扩展程序使用的策略。 -
每一个架构要么包含
$ref
值,要么只有一种类型(type
)。
如果架构无效,Chrome
浏览器不会载入扩展程序,并指出无法验证架构的原因。如果某个策略值没有遵循架构,它不会发布至
storage.managed
API。
示例架构
{ "type": "object", // "properties" 将对象可选的键映射至它的架构, // 在顶层对象中,这些键即为支持的策略名称。 "properties": { // 策略名称 "AutoSave" 映射至它的架构,在以下 // 例子中,将它声明为一个简单的布尔值。 // "title" 和 "description" 是可选的,用来 // 显示用户友好的名称以及提供给管理员的文档。 "AutoSave": { "title": "自动保存更改。", "description": "如果设置为 true,更改会自动保存。", "type": "boolean" }, // 支持的其他简单类型包括 "integer"(整型)、 // "string"(字符串)和 "number"(数值)。 "PollRefreshRate": { "type": "integer" }, "DefaultServiceUrl": { "type": "string" }, // "array" 为遵循某个架构的项目列表,在 // "items" 中描述。遵循该架构的一个例子为 // [ "one", "two" ]。 "ServiceUrls": { "type": "array", "items": { "type": "string" } }, // 以下是一个更复杂的例子,描述书签列表, // 每一个书签包含 "title"(标题),可以拥有 // "url" 或 "children" (子书签列表)。"id" // 属性用来为架构命名,其他架构可以通过 // "$ref" 属性引用它。 "Bookmarks": { "type": "array", "id": "ListOfBookmarks", "items": { "type": "object", "properties": { "title": { "type": "string" }, "url": { "type": "string" }, "children": { "$ref": "ListOfBookmarks" } } } }, // "object" 可以包含已知属性,在 "properties" // 中列出,还可以包含可选的 "additionalProperties", // 表示 "properties" 中未列出的键使用的架构。 // 以下例子可以将 URL 映射至它的设置,策略值的 // 一个例子为: // { // "youtube.com": { // "blacklisted": true // }, // "google.com": { // "bypass_proxy": true // } // } "SettingsForUrls": { "type": "object", "additionalProperties": { "type": "object", "properties": { "blacklisted": { "type": "boolean" }, "bypass_proxy": { "type": "boolean" } } } } } }