In an app we're creating, we need to add some extra screens to configure the app.
It would be nice if we could add extra buttons on the opening screen of the app, that is only visible if the iPad is not in guided access.
Is it possible to detect that the device is currently running with guided access, and react to it being enabled or disabled?
You want something like this:
NSLog(@"Accessabilitiy enabled: %@", UIAccessibilityIsGuidedAccessEnabled() ? @"YES" : @"NO");
if (!UIAccessibilityIsGuidedAccessEnabled()) {
// show something since I'm not in guided access
}
If you want to know when it changes...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(guidedAccessChanged) name:UIAccessibilityGuidedAccessStatusDidChangeNotification object:nil];
then check to see if it is on or off as per the first test.
Guided Access in depth at WWDC 2013 (begins at 39:26)
Check if Guided Access is Enabled ( iOS 6+ ):
UIAccessibilityIsGuidedAccessEnabled()
Respond to Guided Access status changes ( iOS 6+ ):
UIAccessibilityGuidedAccessStatusDidChangeNotification
Add custom restrictions while in Guided Access mode ( iOS 7+ ):
UIGuidedAccessRestrictionDelegate
Getting the restriction state for specified restriction ( iOS 7+ ):
Swift:
func UIGuidedAccessRestrictionStateForIdentifier(_ restrictionIdentifier: String) -> UIGuidedAccessRestrictionState
Obj-C
UIGuidedAccessRestrictionState UIGuidedAccessRestrictionStateForIdentifier(NSString *restrictionIdentifier);
Swift 4.2:
if !UIAccessibility.isGuidedAccessEnabled {
// show something since I'm not in guided access
}