
Client Initial Connection
• Simple “status” message
• Identifies self via UDID
• Triggers server to provide command
<plist version="1.0">
<dict>
<key>Status</key>
<string>Idle</string>
<key>UDID</key>
<string> [ redacted ] </string>
</dict>
</plist>
• Command in “RequestType” field
• CommandUUID field mandatory
–Content optional
–Allows matching of commands and responses
<dict>
<key>Command</key>
<dict>
<key>RequestType</key>
<string>ClearPasscode</string>
<key>UnlockToken</key>
<data>[ redacted ] </data>
</dict>
<key>CommandUUID</key>
<string>69c4597f-4640-437c-8fac-b341af659212</string>
</dict>
Now that the device is fully enrolled, it can respond to push notifications
by contacting the “Server URL” address. When connecting, the client
PUTs a simple message identifying “Status = Idle”, and the server
responds with a command, again in a .plist format.
The client executes the command, and responds with a simple
acknowledgement message, or with appropriate data as requested by
the server.
The commands are framed in .plist format. A top-level key “Command”
is made up of a dictionary of key/value pairs. Usually this will include
only the single key “RequestType,” which has as its value the actual
command being sent. In some cases, additional parameters will get
added as peers to the RequestType key.
The command also includes a UUID string that uniquely identifies the
instance of the command. This is useful for matching up responses with
the command that caused them to be sent, especially when several
commands may be queued up but aren’t necessarily delivered, or
processed, in order.
In practice, this field can actually be left blank, however it’s probably
best practice to fill it with some random (or controllable) UUID.
Comentarios a estos manuales