Property List (Info.plist) changes
In the last installment of Preparing for Mac App Store Submission, I discussed the project modifications that are necessary (or recommended) for converting an existing Mac OS X project to one suitable for MAS submission.
This second part describes the changes to the information property list for your application that you should make for successful submission and to eschew rejections for simple issues. As before, comments about any other issues or different experiences are certainly welcome.
Open the application information property list, usually named ‘Info.plist‘, in your project and follow these steps…
1. Update the bundle version format
First, update the format of the ‘Bundle version’ entry (CFBundleVersion) to contain exactly 3 period-separated integers representing the version number (e.g., “1.01.1“). It cannot contain alphabetic characters (and although some documentation suggests that it may contain more or fewer integers, we did not take that chance).
For non-MAS applications, the format of this field was not enforced and, in fact, the default ‘About’ box encouraged the use of this field as a standard version description (alphanumeric string) by directly displaying it underneath the application name. We used a format like, “1.01 (January 2012)”, which is more useful and aesthetically pleasing, but this was cause for rejection.
2. Add an application category
If you do not have one already, you will need to add an ‘Application Category’ entry (LSApplicationCategoryType). The easiest way to set this value (in Xcode 4) is to select the ‘Summary’ tab for your target and select the appropriate setting in the ‘Application Category’ box. In the case of Pretty Good Solitaire, we chose ‘Games – Card Games’ (public.app-category.card-games).
Note that Xcode 3 did not recognize this key, so it was necessary to explicitly add it, along with the appropriate category value, as found in the Information Property List Key Reference; fortunately, this is no longer necessary.
3. Set the minimum system version
Next, set the ‘Minimum system version’ entry (LSMinimumSystemVersion) to “10.6.6”, or higher if appropriate.
The Mac App Store does not work on versions of Mac OS X prior to 10.6.6 anyway, and leaving this at a lower setting (even if your downloadable versions support Leopard, Tiger, or even an earlier OS) may be cause for a rejection.
4. Review the supported document types
Finally, review the supported ‘Document types’ entry (CFBundleDocumentTypes), if any. Remove any document types that will not be supported in your store version.
In our case, we supported a document type for saved games, which is still useful, but also a document type for automatic installation of extra card sets (which can be downloaded), or in the case of Pretty Good MahJongg, types for both extra tile sets and tile matching layouts. Since downloading or installing any improvement to your application (outside of the Mac App Store) is verboten, we needed to remove this support.
Note that this initially passed muster with our first product, but it was cause for a rejection later on a different product using essentially identical functionality. There is clearly some subjectivity to the application reviews, so a more thorough (or nitpicky) reviewer may find something previously allowed. When a rejection can set your release schedule back a couple of weeks or more, it is not worth the risk.
With just these few changes to your information property list, your project should have the necessary application information for submission. In the next installment, Part 3: Data and Resource guidelines, I will describe the issues you may encounter with your application data.