Why App Locking in iOS is Not Possible

Our customers love App Protector and frequently ask why we don’t offer it for the iPhone and iPad.  Unfortunately, the answer continues to be no for reasons we’ll outline below.

To be clear, Apple recently released a feature in iOS 6 called Guided Access, which locks down an iOS device to one application.  The feature is really well designed and useful for kiosk, point of sale, and other single app scenarios.  There are a couple good articles and videos describing this feature here and here.

While Guided Access handles kiosk types of situations well, it still fails to address the situation where you want to protect access to certain applications (put a PIN around them) or only allow certain applications but block all others.

There are 3 primary reasons why App Protector cannot currently work on iOS:

  1. Only certain apps are allowed to run in the background
  2. Can’t move app from background to foreground
  3. Inability to know what app is launching

There are other smaller technical reasons but these are the 3 primary “blockers”.  Let’s explore each one in more detail.

Background Apps – Apple does allow VOIP, location, and music apps to run in the background.  Even though we could claim to be one of these types of apps to gain background permissions, there’s always the risk of Apple rejecting the application because it doesn’t actually fall into one of these categories.  Even if we were lucky to circumvent Apple’s policies, the next two issues are not as forgiving.

Moving to Foreground – Assuming we can get over the first hurdle, there’s still an issue of moving an app from the background to the foreground.  Unfortunately, this is just something iOS doesn’t allow.  So in the case we were notified to lock or block an application, we would not able to move our application to the foreground to warn the user of the impending lock.

You might say that moving to the foreground is not necessary if you can kill the process of the locked app.  This too is not possible due to the sandboxed app architecture of iOS.

Launching App – The final hurdle is that there is no way to detect which app is currently running and in the foreground.  So even if the above two points were possible, our app would never know when to perform its app locking.

 

So what can be done? 

For personal users, unfortunately there isn’t that much that can be done right now.  There are some really hacky workarounds we’re experimenting with, but nothing provides the ideal experience.

For businesses, we can provide network policies through NetGuard which can accomplish many of the goals that people have with App Protector.  For any given app we can control their network access so that even if they can be launched, they will not work.  Furthermore, we can offer some additional device controls that can shut off apps like the camera, iCloud, and the App Store.  While this isn’t quite as elegant, it does give organizations some alternatives to lock down the device.

We’ll continue to keep hacking away on this functionality and please let us know in the comments if you’ve found some good alternatives.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s