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
Section titled “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
Section titled “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>
<!-- Settings Links (no defaults — links hidden when absent) --> <key>contactSupportURL</key> <string>https://devscape.io/support</string> <key>privacyPolicyURL</key> <string>https://devscape.io/privacy-policy</string> <key>termsAndConditionsURL</key> <string>https://devscape.io/terms-and-conditions</string>
</dict></plist>Value Types
Section titled “Value Types”The configuration uses standard plist value types:
| Plist Type | Example | Used For |
|---|---|---|
<string> |
<string>barcode</string> |
Text values, icon names, provider names, URLs |
<true/> / <false/> |
<true/> |
Boolean toggles (visibility, feature flags) |
<integer> |
<integer>30</integer> |
Numeric values (refresh intervals) |
MDM Variable Substitution
Section titled “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
Section titled “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
Section titled “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