OMA DM コマンドは、メッセージ内のサーバーとクライアント デバイスの間で送信されます。 メッセージには、1 つ以上のコマンドを含めることができます。 サポートされているコマンドの一覧については、 OMA DM プロトコルサポートの表を参照してください。
DM メッセージは XML ドキュメントです。 ドキュメントの構造と内容は、OMA Web サイトから入手できる 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 デバイス管理 Protocol 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 が必要です。
メッセージの送信元と送信先の Uniform Resource Identifier (URI)
認証の資格情報
この情報は、DM セッションを適切に管理するためにクライアント デバイスによって使用されます。
コードの例
次の例は、DM メッセージのヘッダー コンポーネントを示しています。 この場合、OMA DM バージョン 1.2 は例としてのみ使用されます。
注
デバイス生成 DM パッケージの SyncHdr 内の <Source>
要素の<LocURI>
ノード値は、./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 には、1 つ以上の DM コマンドが含まれています。 SyncBody には複数の DM コマンドを含めることができます。各コマンドには、異なる CmdID 値が必要です。
コードの例
次の例は、DM メッセージの本文コンポーネントを示しています。 この例では、SyncBody には Get というコマンドが 1 つだけ含まれています。 このコマンドは、Get コマンドの終了タグの直後に発生する <Final />
タグによって示されます。
<SyncBody>
<!-- query device OS software version -->
<Get>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./DevDetail/SwV</LocURI>
</Target>
</Item>
</Get>
<Final />
</SyncBody>
OMA DM プロビジョニング用の SyncML を使用している場合、SyncBody の LocURI は、最初のセグメントでのみ有効なセグメント名として "." を持つことができます。 ただし、"." は他のセグメントの有効なセグメント名ではありません。 たとえば、次の LocURI は有効ではありません。7 番目のセグメントのセグメント名は "." です。
<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>