Planning on having user specific options or settings for your iPhone app? Where do they go? What’s the easiest way to add it? What’s the Apple recommended way? The choices come down to either an in-app settings view or using Apple Settings app.
“Adding your application preferences to the Settings application is most appropriate for productivity-style applications and in situations where you have preference values that are typically configured once and then rarely changed. For example, the Mail application uses these preferences to store the user’s account information and message-checking settings. Because the Settings application has support for displaying preferences hierarchically, manipulating your preferences from the Settings application is also more appropriate when you have a large number of preferences. Providing the same set of preferences in your application might require too many screens and might cause confusion for the user.”
Putting your user preferences in your app seems to be the preferred way for users. The majority of users don’t go look at the Settings App to see if there are specific settings for your App. If you previously used Tweetie for the iPhone, you may have noticed that Settings were in the Settings app but have since moved to in app in Tweetie 2.
The obvious downside to this method, is that you must implement everything for the settings. This includes, saving and restoring the data, configuring the views and displaying them accordingly. Alternatively, there’s a new project on GitHub aimed at making all this a bit easier called InAppSettingsKit.
In-app settings does allow users to change their user preferences without leaving your app and coming back to it. This in-itself is a pretty big benefit to the user’s experience. Forcing a user to leave your app to change a setting isn’t something very pleasing. Another smaller benefit of doing in-app settings, is giving the developers the choice of how and where they want to save the information. Be it either in a file on disk, using Core Data or directly into a SQLite database. Not a terribly big benefit though. A final benefit of having in-app settings, is full control of the user interface for the settings. If you want to have multiple views for separate sections such as an Advanced section, Experimental section or even just a full text view for an About section. This can all be done with in-app settings, but not with Apple’s Settings app.
The Apple preferred method for user preferences that are rarely changed. That pretty much encompasses the majority of user preferences that are set once and rarely ever changed again. Adding your app to the Settings app is extremely easy. Apple has basically taken care of everything. You will need to provide a small icon image in your app for the Settings App to display, but outside of that, the Settings Bundle will be able to handle most things, including Groups and Hierarchical preference panes.
The obvious downfall is that users may assume that if there’s no in-app Settings screen, that your app just doesn’t have an user configurable settings. This can be easily remedied by making sure to inform users that the Settings are located in the Settings App on first launch, noting it in your App Store description and any other methods you may have.
As a final note, and also an Apple recommendation:
You should never spread your preferences across the Settings app and in-app settings screens. If you have preferences, pick one solution and use it exclusively. Having both would only serve to further confuse your users.