We have deployed iPads as signage players in our new student union for two applications on campus: meeting room placards and resident dining station identifiers. We chose iPads because they were significantly cheaper than most other alternatives. We also liked that we completely control the output on the screen, an option not available with many of the stock systems.
We learned many lessons through this endeavor, and it hasn’t been without headaches. However, this how-to list will get you started, should you want to do something similar. I am grateful to SecondStory and Random-Stuff for their insights. Things have just changed slightly since their articles were written.
This article assumes that you have a jailbroken iPad running iOS version 7.1.2. It’s possible to run a kiosk on a stock iPad, but you won’t have the error correcting capabilities afforded by a jailbroken one.
Get the apps
- Cydia: Install OpenSSH to enable remote access
- Cydia: Install Nano since the iPad doesn’t have a text editor in the shell
- Cydia: Install Open to allow you to launch apps from the command line
- Cydia: Install Activator to enable all the automation hooks for your kiosk
- App Store: Install your kiosk app. We use Kiosk Pro, and we really dig it.
- Optional: We install Insomnia to help keep WiFi active on the device. We’re not certain that it helps, but it gives us a warm, fuzzy feeling.
Set up the iPad
- Enable restrictions in Settings > General > Restrictions. We lock down pretty much everything that can be locked down.
- Set Settings > General > Auto Lock to “Never”
- Set Settings > General > Multitasking Gestures to “Off”
- If users have access to physical buttons on the iPad, download IncarcerApp from Cydia or use the built in Guided Access to lock the iPad into one single app.
- Set up the Activator app.
- Set Anywhere > Power > Connected to launch your kiosk app. This will launch your app automatically after the device reboots.
- Set Anywhere > Left WiFi to reboot the device. This may be a bit overkill, but it’s the best way I’ve found so far to react to lost WiFi.
- Set Anywhere > Device Locked to unlock the device. If, for some reason, the iPad gets locked, this will open it back up. When they are in locked cases, it’s frustrating to have to free them just so you can press the home button.
- Bonus. I also set a couple of gestures in Activator to go home and go back to the kiosk app. This, again, allows me to do some quick tweaks without freeing the device from its enclosure.
Create the launch script
The launch script is AWESOME. If the app crashes, the launch script will restart it within a couple of seconds. If someone makes a tool to press the home button through your enclosure… no worries… the launch script will restart your app within a few seconds. Here’s how to do it… again, absolutely thankful to SecondStory for this approach.
- SSH to the iPad. I use PuTTY for SSH on my PC. Macs have it built in to the terminal.
Username is root and the default password is alpine. Change this immediately.
- Create a plist launch daemon script in /Library/LaunchDaemons/ named something like com.yourcompany.startUp.launchd.plist
- Sample script at https://gist.github.com/1424299
- Make sure the name of the file matches the label within the script
- If you use the Kiosk Pro app, the correct bundle identifier is com.kioskgroup.kioskproapp
- Enable the script by running the following command, substituting your correct filename:
launchctl load /Library/LaunchDaemons/com.yourcompany.startUp.launchd.plist
Once you load the launch script, your app should pretty much immediately start up. This will let you know that you’ve done it correctly.
- Once you have the launch script installed, it’s a booger bear to do anything on the iPad since it keeps re-opening your app. To disable the launch script, you’ll need to SSH in again and run the following command:
launchctl unload /Library/LaunchDaemons/com.yourcompany.startUp.launchd.plist
- You can reboot the iPad remotely by opening an SSH connection and issuing the command reboot. Pretty simple, eh?
- I have set static IPs on all of the iPads so that I can SSH to all of them from the office, and I’m currently building a GUI for our building manager to be able to issue reboot commands to any of the iPads in the building, should troubles arise.
- I am also working on creating a nightly reboot process for the iPads, but I haven’t gotten it working quite yet. n8henrie has a good starting point, but I’m not sure if it’s 7.1.2 compatible.
- The KioskPro app has the ability to get its settings from an XML file. This is fantastic as it allows you to make changes to the signage player without actually visiting the signage player. If a super special event is going on and the building manager wants to show something different from the norm, I only have to edit the XML file to point to the new content location.