Lock-down iPhone/iPod/iPad so it can only run one app

IphoneSecurityIpadIpodJailbreak

Iphone Problem Overview


We'd like to 'lock-down' an iPhone/iPod/iPad so that the user can only run one app (we've developed this app internally). I'm guessing we'd be looking at jailbreaking, and then replacing (?) the default Springboard app.

Can we do this? If so, how?


EDIT: iOS 7 now includes an 'App Lock' payload as part of the device configuration profile. From the Apple docs: > "By installing an app lock payload, the device is locked to a single application until the payload is removed. The home button is disabled, and the device returns to the specified application automatically upon wake or reboot."

Read more about it here:
https://developer.apple.com/business/documentation/Configuration-Profile-Reference.pdf

Iphone Solutions


Solution 1 - Iphone

It is possible to put an iPad or iPhone into 'Store Demo' mode so that the home button and swipe to home gesture is disabled. If you have seen the iPads in the Apple Store running the smart sign apps then you will know what I mean.

It is actually pretty trivial to make this work, all you need to do is install a correctly formatted mobile config plist over the air from a web server.

To deliver your config from the web all you have to do is direct the iPhone to a url containing the profile. Just open the link to your .mobileconfig file in safari. If you don't have web space you can just use dropbox public folder URLs or switch on your mac webserver.

It's possible that you can load the config using IPCU too but I have not tried this. This config file will not load in the iPhone Configuration Utility as it uses keys that IPCU doesn't know about. You can combine this with whatever other enterprise configuration profiles you have in play.

EDIT: @cocoanetics pointed out that IPCU is not required to remove the profile. However note that to get your device back to normal you would need to do the following:

  1. Reboot
  2. Open the settings app FIRST - don't open anything else or you will need to reboot again
  3. Settings->General->Profiles->[your profile] remove it.
  4. Reboot

you should be back to normal.

I have included an example plist that will disable the home button and lock your device into the app.

BEWARE

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. As @Cawas has said this completely disables the ability to return to the home screen (unless your app crashes) including accessibility assistive touch.

Note that after installing the profile you must reboot the device (power off, power on) for it to take effect. To remove the profile plug the device into IPCU and delete it then reboot the device. Everything will be back to normal.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>PayloadDescription</key>
			<string>Disables home</string>
			<key>PayloadDisplayName</key>
			<string>Home Button Lock</string>
			<key>PayloadIdentifier</key>
			<string>com.hbkill.kiosk</string>
			<key>PayloadOrganization</key>
			<string>My Org</string>
			<key>PayloadType</key>
			<string>com.apple.defaults.managed</string>
			<key>PayloadUUID</key>
			<string>B2D02E2D-BAC5-431B-8A29-4B91F71C9FC1</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>PayloadContent</key>
			<array>
				<dict>
					<key>DefaultsDomainName</key>
					<string>com.apple.springboard</string>
					<key>DefaultsData</key>
					<dict>
					<key>SBStoreDemoAppLock</key>
					<true/>
					</dict>
				</dict>
			</array>
		</dict>
	</array>
	<key>PayloadDescription</key>
	<string>Disables Home Button</string>
	<key>PayloadDisplayName</key>
	<string>Home Button Lock</string>
	<key>PayloadIdentifier</key>
	<string>com.hbkill</string>
	<key>PayloadOrganization</key>
	<string>My Org</string>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>614D1FE3-F80D-4643-AF6B-D10C4CC8737A</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

You may well have moved on from this but I thought I would post this answer here as I came across the question while I was trying to figure out how to do the same thing.

Solution 2 - Iphone

This is a feature of iOS 6 that can be used without hacky attempts. It's called 'guided access'. I small tutorial is here.

EDIT: In case the device's battery runs empty while it's in the hands of a restricted user, the user could reload the device and it will reboot without guided access. However, if you choose to use a password for the device, this shouldn't be a problem.

Solution 3 - Iphone

An alternative to the (admittedly much simpler) approach described by Rick is to:

Solution 4 - Iphone

http://www.apple.com/support/ipad/enterprise/

Apple provides enterprise configuration tools which allow control over which applications are permitted etc. This is done through profile management it seems. See link for more details

Solution 5 - Iphone

I agree with a comment from some hours ago: Settings > General > Restrictions should do the trick. If the user can't install anything, can't access Safari or Mail, then there is no reason to ever quit your app.

Solution 6 - Iphone

Block internet access from device (MAC-filter on wi-fi can do the trick). Any other non-internet related problem (music, games, etc) should already be solvable by the current IT infrastructure (unless your developers plays and listen to MP3 at work).

Solution 7 - Iphone

i found one way to quit this home-lock state. i have install "backgrounder" via cydia which make your app run in background if you press home button for one second or more. and now, when i longpress home button, i back to the home screen.

that is all.

pay attention on longpress.

Solution 8 - Iphone

Um- wasn't sure if this is an answer or a comment but - the solution that is now part of the question has a weakness - our support staff used this and found that if you "Tap the power button to ‘soft-off’ then hold the home button as you power on and slide to unlock. Sometimes iPad will start on the home page or else XXAPPLCATIONXX will hang and then drop out to the home page. Eitherway X is able to access the home page without the passcode."

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionwpearseView Question on Stackoverflow
Solution 1 - IphoneRickView Answer on Stackoverflow
Solution 2 - IphonebrainrayView Answer on Stackoverflow
Solution 3 - IphoneYang MeyerView Answer on Stackoverflow
Solution 4 - IphoneJames SelleckView Answer on Stackoverflow
Solution 5 - IphoneKevin RenskersView Answer on Stackoverflow
Solution 6 - IphoneEduardo CostaView Answer on Stackoverflow
Solution 7 - IphoneiWillView Answer on Stackoverflow
Solution 8 - IphoneJoeView Answer on Stackoverflow