My team is designing an app for retail associates that need to share managed iPads. We keep the app in Guided Access mode on our login app until an auth token is obtained. Then the iPad is opened for general use. Upon signout we need to re-enter guided access mode and we can do this via manual signout easily. But with idle signout, ie after 60 minutes of inactivity, we need to be able to make a call from the background (in a locked state even) and sign out the user, clear the pin code and enter single app mode before restarting. So that hopefully once the device restarts, we have the app in a locked state again until the next user provides credentials that can obtain a new auth token. We are struggling to see if this is even possible. Our bosses will be displeased if we tell them it isn't. So anybody with any tips would be very appreciated.
Hey, thanks for writing about your experience using Guided Access. Can you confirm that you're using the following API to turn on and off Guided Access from within your app?
requestGuidedAccessSession(enabled:completionHandler:)
If so, it is required that your app is open and frontmost in order for this API call to activate Guided Access / Single App Mode. Therefore it is additionally required that the device is unlocked.
You be able to achieve the effect you are looking for by using a Mobile Device Management (MDM) payload to deploy a restriction profile to the device. This allows you to control more of the behavior of the system, but also requires additional steps, like enrolling each iPad in an MDM solution and managing the payloads remotely or physically in person.
https://support.apple.com/guide/deployment/app-lock-payload-settings-dep80a981/web
Using either the Guided Access APIs or using MDM payloads to restrict the device are typically used in an opposite fashion than what you are describing, where it is the intention to keep the device only in one app for its primary use and purpose. I'm only saying this because it may explain why you might encounter friction trying to implement a solution that is not necessarily a consideration.
If you'd like, you may submit feedback and requests that you and your team have for these features by using the Feedback Assistant tool, https://developer.apple.com/bug-reporting/