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
- You define a configuration dictionary in your MDM console
- Your MDM pushes the configuration to the device alongside the app
- iOS stores it in
UserDefaultsunder the keycom.apple.configuration.managed - SupportID reads this dictionary at launch and when changes occur
// How SupportID reads the configurationlet 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 Type | Example | Used 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:
| Platform | Syntax | Example |
|---|---|---|
| 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:
- Open the app and tap the gear icon
- Check Configuration Status — should show Active
- Verify that all data point values are populated correctly