Guided access mode programmatically

I'm developing an app for educational purposes.

Use case is as following:

  • Students use their own device as they usually do.
  • When student comes to the class - they will be using the educational app, as a typical app.
  • When exam starts, student connects to the teacher and the teacher should be able to lock connected devices to this educational app only (so that student cannot cheat, or use other apps).
  • When the exam finishes - teacher unlocks all connected devices, so that all the device features are available again, and they can exit the educational app.


What Apple Docs suggest - that you need to supervise device in order to be able to control it. This is not an option for us, as supervising will wipe all the user data (correct me if I'm wrong) + it's long process.

(NOTE: option autonomousSingleAppModePermittedAppIDs in MDM profile also requires to supervise the device)



Another option - teacher can manually enter the Guided Access mode on each of the student's devices, but that also takes time and is by far not user friendly and not an option for large group of students (we target for any group size).


Is there an option to enter Guided Access mode with out supervising the device. For example, app will prompt "Grant this app permission to enter Guided Access mode?". User selects "Yes", and after that the app will be able to enter Guided Access during the exam automatically.

Maybe Apple can approve our app for doing this after reviewing that it does not do any harm for user device and is useful in education?

Or is there any other similar option?


So far I couldn't find find such option anywhere on the Internet (and I've been searching for a few days so far).


Any help appreciated.

Thanks in advance.

Hi Andriy,


I am also facing the same issue. I am also searching so far for this.

If you find any solution please help me out.


Thanks in advance.

Congratulations on listing the alternatives to what you want to do. Your next step is to accept that you're not able to do what you want to do and need to adjust.


For example, modify your app so that the test doesn't start until AFTER the user permits guided access mode. So your use case becomes:


  • Students use their own device as they usually do.
  • When student comes to the class - they will be using the educational app, as a typical app.
  • When the student wants to start the exam, call the method to start guided access mode. After the guided access mode starts, begin the exam.
  • At the end of the exam, exit guided access mode.

If you want to add additional coordination (like arranging so the students can't start early), that's fine. But those last two points are the restricting principles.

See this wwdc video: https://developer.apple.com/videos/play/wwdc2017/716/

You may have to apply and Apple may not approve you, but it's worth a shot and will do what you want.
Guided access mode programmatically
 
 
Q