OMA DM 命令在消息中的服务器和客户端设备之间传输。 消息可以包含一个或多个命令。 有关支持的命令列表,请参阅 OMA DM 协议支持中的表。
DM 消息是 XML 文档。 文档的结构和内容在 OMA 网站提供的 OMA DM 表示协议 (OMA-SyncML-DevInfo-DTD-V1_1_2-20030505-D.dtd) 中定义。
每条消息由 SyncHdr 元素指定的标头和由 SyncBody 元素指定的消息正文组成。
下表显示了支持的 OMA DM 版本。
版本 | 格式 |
---|---|
OMA DM 版本 1.1.2 | <SyncML xmlns='SYNCML:SYNCML1.1'></SyncML> |
OMA DM 版本 1.2 | <SyncML xmlns='SYNCML:SYNCML1.2'></SyncML> |
文件格式
以下示例显示服务器使用 OMA DM 版本 1.2.1 发送的 XML 文档的常规结构,仅用于演示目的。 在客户端和服务器之间交换的初始 XML 包可能包含更多 XML 标记。 有关这些包的详细说明和示例,请参阅 OMA 设备管理 协议 1.2.1 规范。
<SyncML xmlns='SYNCML:SYNCML1.2'>
<SyncHdr>
<VerDTD>1.2</VerDTD>
<VerProto>DM/1.2</VerProto>
<SessionID>1</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>{unique device ID}</LocURI>
</Target>
<Source>
<LocURI>https://www.contoso.com/mgmt-server</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<!-- query a device OS system version -->
<Get>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./DevDetail/SwV</LocURI>
</Target>
</Item>
</Get>
<!-- Update device policy -->
<Final />
</SyncBody>
</SyncML>
SyncHdr 元素
SyncHdr 包括以下信息:
文档类型定义 (DTD) 和协议版本号
会话和消息标识符。 同一 DM 会话中的每个消息必须具有不同的 MsgID。
消息源和目标统一资源标识符 (URI)
用于身份验证的凭据
客户端设备使用此信息来正确管理 DM 会话。
代码示例
以下示例显示了 DM 消息的标头组件。 在这种情况下,OMA DM 版本 1.2 仅用作示例。
注意
<LocURI>
设备生成的 DM 包的 SyncHdr 中 元素的节点值<Source>
应与 ./DevInfo/DevID 的值相同。 有关 DevID 的详细信息,请参阅 DevInfo 配置服务提供程序。
<SyncHdr>
<VerDTD>1.2</VerDTD>
<VerProto>DM/1.2</VerProto>
<SessionID>1</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>{unique device ID}</LocURI>
</Target>
<Source>
<LocURI>https://www.contoso.com/mgmt-server</LocURI>
</Source>
</SyncHdr>
SyncBody 元素
SyncBody 包含一个或多个 DM 命令。 SyncBody 可以包含多个 DM 命令;每个命令必须具有不同的 CmdID 值。
代码示例
以下示例显示了 DM 消息的正文组件。 在此示例中,SyncBody 仅包含一个命令 Get。 此命令由 <Final />
紧接在 Get 命令的终止标记之后出现的标记指示。
<SyncBody>
<!-- query device OS software version -->
<Get>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./DevDetail/SwV</LocURI>
</Target>
</Item>
</Get>
<Final />
</SyncBody>
使用 SyncML for OMA DM 预配时,SyncBody 中的 LocURI 只能将“.”作为第一个段中的有效段名称。 但是,“.”不是其他段的有效段名称。 例如,以下 LocURI 无效,因为第七段的段名称是“.”。
<LocURI>./Vendor/MSFT/Registry/HKLM/Security/./Test</LocURI>
更新设备设置示例
Replace 命令用于更新设备设置。
以下示例演示如何使用 Replace 命令更新设备设置。
<SyncHdr>
<VerDTD>1.2</VerDTD>
<VerProto>DM/1.2</VerProto>
<SessionID>1</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>{unique device ID}</LocURI>
</Target>
<Source>
<LocURI>https://www.contoso.com/mgmt-server</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<!-- update device setting -->
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/PolicyManager/My/DeviceLock/MinDevicePasswordLength</LocURI>
</Target>
<Meta>
<Type xmlns="syncml:metinf">text/plain</Type>
<Format xmlns="syncml:metinf">int</Format>
</Meta>
<Data>6</Data>
</Item>
</Replace>
<Final />
</SyncBody>