It is well known that App Store is a place provided by Apple Inc. for developers to launch apps and for users to download the apps. To create a good, fair, healthy, and secure app store environment for both developers and users, Apple develops a set of review guidelines and requires that all apps should comply with the terms before getting listed on to App Store. Recently, Apple discloses Top 10 reasons for app rejections (over 63% of apps got rejected due to the Top 10 reasons) during June of 2016 on its official website. The guidelines seem easy to conform, but there is still a large quantity of apps getting rejected. Actually, the root causes for the rejection lie in the lack of understanding on the review guidelines and control over compliance with the guidelines.

Then, is there any way to accurately and systematically understand those seemly confusing review guidelines? Yes. Tencent pre-review team has started a series of exploration and learned about experiences since 2014:

1. Analyzed the terms of App Store Review Guidelines, and learned lessons from previous rejection cases, to design systematic tests and output implementable test cases.

2. Performed automated analysis on the basis of the preceding step, to extract modules that can be automated (and corresponding automated tools are to be developed).

3. Built a special team of testers to perform acceptance testing on remaining test cases.

4. Committed to ensuring that each App build are accepted in the preceding tests before being officially submitted to Apple for review.

Which content in the IPA package is scanned? The following figure shows the general aspects and some will be described in detail subsequently.

Info.plist Check: Info.plist is a structured text file, the so-called "property list". Every iOS app uses the Info.plist file to store metadata and determine what icon to display for a bundle, what document types an app supports, and service statements, etc. The scanning guidelines are sourced from Information Property List Key Reference, including the following aspects of content:

Content Aspects
Acceptance Concept 1. UIBackgroundModes key: Specifies background services. The stated background functions must be executable. Available values include audio, location, voip, fetch, remote-notification, bluetooth-central, etc.
2. UIDeviceFamily key: Specifies device types an app supports. It should be set to 1 when running on iPhone and iPod, and set to 2 when running on iPad.
3. UIRequiredDeviceCapabilities key: The stated capabilities should be implementable. Available values include telephony, wifi, accelerometer, sms, and still-camera.
4. UIFileSharingEnabled key: Specifies file sharing. If the key exists and is set to true, ensure that files can be shared using the iTunes file sharing function.
5. BundleID, version number, and other properties.
Review Guidelines Information Property List Key Reference

Icon Check: Apple has explicit requirements for icons of apps on iPhone, iPad, iPod and so on. An IPA package must include the following different sized PNG icons: 180 x 180, 120 x 120, 76 x 76, 152 x 152, and 167 x 167 (For details, see the following table). The content of an icon must be identical in different sizes. The guidelines are sourced from iOS Human Interface Guidelines.

Device iPhone 6s Plus
iPhone 6 Plus
(@3x)
iPhone 6s
iPhone 6
iPhone 5
(@2X)
iPhone 4s
(@2x)
iPad
iPad mini
(@2x)
iPad2
iPad mini
(@1x)
iPad Pro
(@2x)
App icon 180 x 180 120 x 120 120 x 120 152 x 152 76 x 76 167 x 167
Icon For
App Store
1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024

App icons are checked by using an automated tool. The IPA package is automatically decompressed and then icons are checked one by one for compliance with the requirements. If an IPA package does not meet the requirements, the tool displays a warning.

Private API Check: Private APIs and non-public APIs are prohibited in App Store Review. The scanning results of APIs are emphasized in each review. The automation concept of this part has been mentioned in some previously shared articles. Some decompiling tools are used to decompile and parse executable files in IPA packages, to obtain libraries, methods, and class sets from the header files, and compare them with private libraries and non-public libraries one by one. If any API in the IPA packages matches the private libraries or non-public libraries, the scanning tool displays a warning.

File Size Check: Mainly the size of the IPA package, the size of the text segment of each executable file, and the size of each file in the package are scanned. If any of the preceding requirements is not met, the scanning tool displays a warning.

Scan Item Scanning Guidelines
Size of each IPA package The IPA package should be smaller than 2 GB.
Size of the text segment of each
executable file
After the IPA package is decompressed, check whether the text segment (the _TEXT column) of each
executable file is smaller than 80 MB.
Size of each file in the package After the IPA package is decompressed, check whether each file is smaller than 500 MB.

The key thinking and content of iOS pre-review are described above. The core concept is to carry out the acceptance work in accordance with App Store Review Guidelines, and at the same time, keep track of Apple's review policies to guarantee pre-review orientation and quality.