This guide covers Apple FamilyControls on-device enforcement (iOS/iPadOS). The
X-Device-Key / CompiledPolicy path is shaped for iOS ManagedSettings and does not carry engagement rules. If you are a web or server-side platform, use the OCSS provider path instead — see Platform integration.How It Works
- Register the device — The iOS app registers with Phosra, receiving a one-time device API key
- Fetch compiled policy — The device polls
GET /device/policyfor a structured policy document - Apply locally — The iOS app translates the compiled policy into Apple framework calls
- Report back — The device reports enforcement status and activity data to Phosra
- Stay updated — APNs silent push notifications alert the device when policies change
Device Registration
Register a device for a child:api_key that the iOS app stores in Keychain:
Fetching the Compiled Policy
The device uses its device key to fetch a structured policy document:CompiledPolicy with sections for content filters, screen time, purchases, privacy, social, notifications, and web filters — all in a format the iOS app can directly map to Apple framework calls.
Conditional Polling
To avoid unnecessary downloads, pass thesince_version parameter:
304 Not Modified if the policy hasn’t changed, or the full policy if it has been updated.
Reporting Activity
The device reports activity data back to Phosra:screen_time, app_usage, web_activity, blocked_attempt, enforcement_status.
Acknowledging Policy Versions
After successfully applying a policy, the device confirms it:APNs Push Notifications
When a policy is updated, Phosra sends a silent push notification to the device:version to its cached version and calls GET /device/policy if an update is needed.
Apple Framework Mapping
UseGET /platform-mappings/apple to see which Apple framework and API class maps to each Phosra rule category: