Hello,
I’m currently reviewing and implementing age assurance and parental approval flows using AgeRangeService and PermissionKit (AskCenter) in the context of Texas regulatory compliance requirements.
While the high-level APIs are clear, there are several technical aspects where the intended usage patterns are not fully explicit in the documentation. Clarification on these points would help ensure our implementation aligns with system expectations and regulatory obligations.
⸻
- Querying the current approval state for SignificantAppUpdateTopic
AskCenter.ask(...) returns Void, and AskCenter.responses(for:) provides an AsyncSequence of approval events.
Is there an official or recommended way to determine whether a SignificantAppUpdateTopic has already been approved when the app launches, or is listening for future responses events the only supported mechanism?
⸻
- Behavior of AskCenter.responses(for:) regarding past approvals
When subscribing to AskCenter.responses(for:): • Does the stream replay previously recorded approval or decline decisions? • Or does it only emit events that occur after subscription?
This affects whether the listener must be registered early in the app lifecycle.
⸻
- Recommended lifecycle timing for registering a responses(for:) listener
What is the intended or recommended time to register a responses(for:) listener? • At application launch • Immediately before calling ask(...) • When entering a specific gated feature
Clarification on the expected lifecycle usage would be helpful.
⸻
- Repeated calls to ask(...) after approval
If AskCenter.ask(...) is called again for the same SignificantAppUpdateTopic after parental approval has already been granted: • Is the request ignored? • Is a new approval request sent to the parent? • Or is the call handled idempotently by the system?
⸻
- Delivery of approval results when the child app is not running
If a parent approves or declines a SignificantAppUpdateTopic while the child app is not running: • Will the approval decision be delivered as a responses(for:) event on the next app launch? • Or is the app expected to persist approval state locally?
⸻
- Persistence of approval state
Is the approval decision for SignificantAppUpdateTopic persisted by the system at the OS level, or is the app responsible for storing approval state?
Additionally, does the approval persist across: • app restarts? • app deletion and reinstallation?
⸻
- Meaning of activeParentalControls.significantAppChangeApprovalRequired
How is activeParentalControls.significantAppChangeApprovalRequired determined? • Is this value explicitly configured by a parent (for example via Screen Time)? • Or is it automatically determined by the system based on region, age, or regulatory requirements?
⸻
- Relationship between significantAppChangeApprovalRequired and AgeRangeService
When activeParentalControls contains significantAppChangeApprovalRequired, is it still expected that apps call AgeRangeService.requestAgeRange(...)?
Or can the presence of this flag be treated as sufficient indication that the user is a minor for gating purposes?
⸻
- Recommended interpretation of AgeRangeDeclaration
Is the intended usage of AgeRangeDeclaration to handle each case individually, or is it acceptable and recommended to interpret the values as different trust levels (for example, self-declared vs. government ID or payment verified)?
⸻
Clarification on these points would help ensure that implementations of age assurance and parental approval flows are consistent with system behavior while meeting regulatory compliance requirements.
Thank you for your guidance.