Skip to content

Managed App Config Schema

This page documents the full Managed App Configuration XML schema that SupportID reads from UserDefaults via the com.apple.configuration.managed key.

How Managed App Configuration Works

  1. You define a configuration dictionary in your MDM console
  2. Your MDM pushes the configuration to the device alongside the app
  3. iOS stores it in UserDefaults under the key com.apple.configuration.managed
  4. SupportID reads this dictionary at launch and when changes occur
// How SupportID reads the configuration
let config = UserDefaults.standard.dictionary(
forKey: "com.apple.configuration.managed"
)

Full Schema

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- General Configuration -->
<key>appTitle</key>
<string>SupportID</string>
<key>uiStyle</key>
<string>Large</string>
<!-- Data Point 1 -->
<key>dataPoint1</key>
<string></string>
<key>dataPoint1Label</key>
<string>Data Point 1</string>
<key>dataPoint1Icon</key>
<string>1.circle.fill</string>
<key>dataPoint1Visible</key>
<true/>
<!-- Data Point 2 -->
<key>dataPoint2</key>
<string></string>
<key>dataPoint2Label</key>
<string>Data Point 2</string>
<key>dataPoint2Icon</key>
<string>2.circle.fill</string>
<key>dataPoint2Visible</key>
<true/>
<!-- Data Point 3 -->
<key>dataPoint3</key>
<string></string>
<key>dataPoint3Label</key>
<string>Data Point 3</string>
<key>dataPoint3Icon</key>
<string>3.circle.fill</string>
<key>dataPoint3Visible</key>
<true/>
<!-- Data Point 4 -->
<key>dataPoint4</key>
<string></string>
<key>dataPoint4Label</key>
<string>Data Point 4</string>
<key>dataPoint4Icon</key>
<string>antenna.radiowaves.left.and.right</string>
<key>dataPoint4Visible</key>
<true/>
<!-- Data Point 5 -->
<key>dataPoint5</key>
<string></string>
<key>dataPoint5Label</key>
<string>Data Point 5</string>
<key>dataPoint5Icon</key>
<string>ipad.and.iphone</string>
<key>dataPoint5Visible</key>
<true/>
<!-- Section Visibility -->
<key>showStorageSection</key>
<true/>
<key>showShortcutsSection</key>
<true/>
<!-- Self Service Configuration -->
<key>selfServiceProvider</key>
<string>jamf</string>
</dict>
</plist>

Value Types

The configuration uses standard plist value types:

Plist TypeExampleUsed For
<string><string>barcode</string>Text values, icon names, provider names
<true/> / <false/><true/>Boolean toggles (visibility, feature flags)
<integer><integer>30</integer>Numeric values (refresh intervals)

MDM Variable Substitution

MDM platforms substitute variables in string values before delivering the configuration:

PlatformSyntaxExample
Jamf Pro$VARIABLE$SERIALNUMBER
Kandji{{VARIABLE}}{{SERIAL_NUMBER}}
Intune{{variable}}{{serialnumber}}
Workspace ONE{Variable}{SerialNumber}

Configuration Delivery

The configuration is delivered to the device when:

  • The app is first installed as a managed app
  • The configuration profile is updated in the MDM
  • The device checks in and receives updated policies

SupportID listens for changes to UserDefaults and updates the UI automatically when new configuration arrives.

Validating Your Configuration

After deploying, verify the configuration in SupportID:

  1. Open the app and tap the gear icon
  2. Check Configuration Status — should show Active
  3. Verify that all data point values are populated correctly