As per documentation, There are two ways of enabling your iOS app to run in kiosk mode.
Configuration Profile: With the help of mobile device management (MDM), we can create an enterprise configuration profile and push this to device using any MDM, popularly known MobileIron for example or with the help of any iPhone configuration utility. Once this profile is installed the first app that is launched when the device is rebooted will be the only app that will run until you reboot the device again.
Guided access (iOS 6 and above): Since iOS 6, we can achieve this using two methods namely Guide Access & Supervised Access. These both methods deals with Accessibility Control features such as allowing user to have restricted access to their device. This can be achieved only if we have full access to the device.
We can achieve setting up Kiosk Mode in iOS App programmatically in iOS 7 using an UIKit method UIAccessibilityRequestGuidedAccessSession. As per the apple developer documentation, 'UIAccessibilityRequestGuidedAccessSession will transitions the app to or from Single App mode asynchronously'.
As given in the apple developer document:
UIAccessibilityRequestGuidedAccessSession
Transitions the app to or from Single App mode asynchronously.
void UIAccessibilityRequestGuidedAccessSession(BOOL enable, void(^completionHandler)(BOOL didSucceed))
Parameters
enable
Specify YES to put the device into Single App mode for this app or NO to exit Single App mode.
completionHandler
The block that notifies your app of the success or failure of the operation. This block takes the following parameter:
didSucceed
If YES, the app transitioned to or from Single App mode successfully. If NO, the app or device is not eligible for Single App mode or there was some other error.
Discussion
You can use this method to lock your app into Single App mode and to release it from that mode later. For example, a test-taking app might enter this mode at the beginning of a test and exit it when the user completes the test. Entering Single App mode is supported only for devices that are supervised using Mobile Device Management (MDM), and the app itself must be enabled for this mode by MDM. You must balance each call to enter Single App mode with a call to exit that mode.
Because entering or exiting Single App mode might take some time, this method executes asynchronously and notifies you of the results using the completionHandlerblock
.
Availability
Available in iOS 7.0 and later.
See Also
UIAccessibilityIsGuidedAccessEnabled
Declared In
UIAccessibility.h