App Store Review Guidelines

From Pin Eight
Revision as of 16:17, 29 August 2017 by Tepples (talk | contribs) (Past secrecy: The PDF from 2010 is broken; link instead to the Engadget article reporting on it)
Jump to: navigation, search

This is a mini-rant, a short essay refuting a common misconception among users of an Internet forum. If you think this essay is FUD, feel free to explain why on the essay's talk page.

The App Store Review Guidelines are a document published by Apple Inc. that dictates what an iOS application in the App Store can and cannot do. It completely excludes several categories of application from iPod touch, iPhone, and iPad devices that are not paired to a Mac running Xcode. Fans of these iProducts defend Apple's practices, claiming that almost nobody demands the functionality that the Guidelines ban. Even if this is true of each individual item, there are still a lot of people who want one or more items on the list as a whole.

Past secrecy

Unlike Microsoft and Google, which have made their Windows Store Policies and Google Play Developer Program Policies available to the public since day one, Apple treated its Guidelines as a trade secret for roughly six years. This history of secrecy has left a bad impression on some developers.

For the first couple years that the App Store operated, it didn't even share the Guidelines with paying members of the iOS Developer Program, forcing a lot of guesswork for which the media criticized Apple. In late 2010, Apple started making the Guidelines available to paying members but not to Registered Apple Developers who had not subscribed to the iOS Developer Program. This posed a problem: an application developer considering iOS for the first time could pay $99 to join the Program only to discover that his application concepts fell into a category of guaranteed rejection. The recommendation back then was to use a version of the Guidelines leaked in September 2010 and/or brainstorm several ideas for applications in case one or two ended up forbidden outright.[1]

Only in June 2014 did Apple officially make the Guidelines available to the public, according to a Bitcoin-related Slashdot submission. Over the years, forbidden practices were added, and other forbidden practices were removed.

No app for that

An iOS app officially can't do any of the following:

Video games with realistic violence
"15.1 Apps portraying realistic images of people or animals being killed or maimed, shot, stabbed, tortured or injured will be rejected"
Video games depicting the U.S. Civil War of 1861-1865
In June 2015, Apple removed military simulations featuring the Confederate States of America as one of the sides from the App Store. Some games were readmitted later,[1][2] but it remains unclear how military simulations can meet the "real government" rule below.
Russian roulette
"15.5 Apps that include games of Russian roulette will be rejected"
Chat roulette
"18.2 Apps that contain user generated content that is frequently pornographic (ex 'Chat Roulette' apps) will be rejected"
Card counting
"22.5 Apps that are designed for use as illegal gambling aids, including card counters, will be rejected"
Satire of an identifiable person or organization
"15.3 'Enemies' within the context of a game cannot solely target a specific race, culture, a real government or corporation, or any other real entity"
An app satirizing Tiger Woods was rejected
Fan-created applications celebrating an organization
"Quoth Steve", a quote of the day app based on Steve Jobs quotations, was rejected.[3]
Video games published by companies now out of business
Video game publishers often use emulation to rerelease older games on iOS. These emulators are cryptographically locked to run only one game. An emulator not locked to one game would require "downloading code" from a disk or ROM image, even if the image is lawfully made per 17 USC 117(a)(1). In addition, an emulator can't even mention the platform that it emulates if said platform is battery-powered.
"3.1 Apps with metadata that mentions the name of any other mobile platform will be rejected"
Launcher replacements
Though iOS 8 finally allows for keyboard replacements, Apple still provides no way for third parties to make app launchers that are more accessible to people with disabilities.
"10.4 Apps that create alternate desktop/home screen environments or simulate multi-app widget experiences will be rejected"
WLAN utilities
You won't find any applications for discovery and troubleshooting of wireless local area networks on iOS. For example, an application might let the user test his router for WPS or other security holes, but not on iOS.[4] Or an application could let the user find a router by playing "hot and cold" with signal strength,[5] but not on iOS. Or an application could let the user take notes about a Wi-Fi hotspot that a device discovers and use those notes to contribute to a collaborative database of public hotspots, but not on iOS. Mozilla, maker of the Firefox web browser, has released an Android app called MozStumbler to map access points, but it can't be ported to iOS because Apple provides no public API for applications to enumerate the SSIDs in range of the device's WLAN radio. And the iOS version of WiFi-Where requires a jailbreak. (Windows Phone reportedly has the same problem.) The only WLAN tools on iOS are tools to scan networks to which your device has already associated.
"2.5 Apps that use non-public APIs will be rejected"
Web browsers that implement HTML features that Apple has left out of Safari
You can't get Firefox with the Gecko engine on iOS.[6] Mozilla has a "Firefox" app on the App Store, and Google has a "Chrome" app, but they're Safari with a different user interface and the respective browser's bookmark, history, and password sync tool. Nor did WebGL work outside of iAd modules[7] prior to iOS 8. Uploads using the <input type="file"> element don't work either except for pictures and videos. Broken rendering in Safari has in fact caused users to abandon iOS.[2]
"2.17 Apps that browse the web must use the iOS WebKit framework and WebKit Javascript"
Book reading programs that use the volume buttons to change pages
"10.5 Apps that alter the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, will be rejected"
Use of e-mail address as account identifier
A lot of existing web applications use an e-mail address to identify a user account. For example, Amazon and Dropbox use an e-mail address as an account identifier. An iOS app that ties into one of these might have to choose some substitute user identifier other than an e-mail address.
"17.2 Apps that require users to share personal information, such as email address and date of birth, in order to function will be rejected"
Professional-grade applications that the user needs to evaluate first
Apple's ban on free trials is holding back ports of Mac software to the iPad Pro.[8]
Notifications on an air-gapped local area network
Since Apple deprecated VoIP background mode in mid-2017, applications for iOS need to use PushKit, Apple's proprietary push notification service. If an iOS device is associated to a network that is not connected to the Internet, it has no way of receiving notifications from PushKit.

Apple very rarely removes something:

Game makers
Prior to June 2017, The Guidelines ban apps that "download code in any way or form" or "install or launch executable code", such as a game maker that plays games that another user has created and shared.
"2.7 Apps that download code in any way or form will be rejected"
"2.8 Apps that install or launch other executable code will be rejected"

Even if an iProduct is technically superior in some way to a particular Android product, that's no help if somebody depends on a particular application, and Apple has made the business decision to allow that application to remain exclusive to desktop or Android. For some people who value simplicity and cannot anticipate needing to do any of these tasks in the next six years, an iDevice may be the right choice. But for the rest of us, Droid does what iDon't. And who knows? Your needs might soon grow to encompass one of these.

Disproof of Turing completeness

The term "general-purpose computer" is often defined in terms of Turing completeness, or whether a machine can act as a universal Turing machine. (Because a Turing machine has unbounded memory, real-world "Turing completeness" is slightly weaker, implying equivalence to a Turing machine with bounded memory.) The following is a proof that the iPod touch, iPhone, and iPad are not Turing complete out of the box.

Consider a computer program with the following pseudocode, titled "Pick-a-Winner":

  • Let Players be a queue of two to six distinct symbols, one of which is "Vladimir".
  • Let Dice be a source of random natural numbers uniformly distributed from the list [1, 2, 3, 4, 5, 6].
  • Repeat the following steps until the length of Players is 1.
    1. Let current be one element popped from Players.
    2. Let roll be one element popped from Dice.
    3. If roll is not 1, push current to the end of Players.
  • If the remaining symbol in Players is "Vladimir", accept and halt; otherwise, reject and halt.

Pick-a-Winner could be trivially implemented on a Turing machine, with Players encoded at early positions on the tape and the remainder filled with enough Dice to have at least five 1 values. (The length of Dice will form a negative binomial distribution, the same distribution whose long tail doomed The Little Match Girl.)

However, the process of Pick-a-Winner is equivalent to Russian roulette. As stated above, Apple Inc. refuses to digitally sign a program implementing the rules of Russian roulette. But any universal Turing machine can run Pick-a-Winner. Therefore, a machine that refuses to execute a program that Apple has not signed cannot be Turing complete because Pick-a-Winner is excluded from programs that it can run. This makes an iPod touch, iPhone, or iPad without a developer license or jailbreak not a general-purpose computer, QED.

This proof became weaker in mid-2015, when Apple loosened its policy to let Mac owner install iOS apps distributed as free software on a device without paying a recurring fee.[9] So an iOS device owned by a Mac owner is LBA-complete (that is, Turing-complete except for a limitation on memory), though requiring each iOS device owner to buy a Mac is still not unambiguously reasonable.[3] It became still looser in June 2017 with the policy change to allow sharing projects in Swift Playgrounds and similar apps.


  1. Kyle Orland. "Apple bars Civil War games from App Store over Confederate flag imagery". Ars Technica, 2015-06-25. Accessed 2017-01-31.
  2. Owen S. Good. "Apple store readmits Civil War strategy game featuring Confederate flag". Polygon, 2015-06-27. Accessed 2017-03-29.
  3. Nellie Bowles. "Quoth Steve Jobs, but Never in the App Store". Re/code, 2014-03-16. Accessed 2017-04-29.
  4. Michael Horowitz. "Router Security Checklist". 2015-11-11. Accessed 2015-11-12.
  5. SimonS et al. "How to find a router at an unknown location in a house?". Super User, 2016-04-10. Accessed 2016-04-14.
  6. Jacqui Cheng. "Firefox is out of the iOS game until Apple changes its ways". Ars Technica, 2013-03-11. Accessed 2017-01-31.
  7. "When will WebGL be supported on iOS Mobile Safari?" Apple Support Communities, 2011-12-29.
  8. Lauren Goode. "The iPad Pro has an App Store problem". The Verge, 2015-11-19. Accessed 2017-03-23.
  9. Benjamin Mayo. "Xcode 7 allows anyone to download, build and ‘sideload’ iOS apps for free". 9to5Mac, 2015-06-10. Accessed 2017-04-18.