App Store Review Guidelines

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.

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
 * "Realistic portrayals of people or animals being killed, maimed, tortured, or abused, or content that encourages violence." (1.1.2)


 * 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, but it remains unclear how military simulations can meet the "real government" rule below.


 * Card counting
 * "Illegal gambling aids, including card counters, are not permitted on the App Store." (5.3.4) This despite the fact that not all jurisdictions with casino gambling ban card counting devices.


 * Satire of an identifiable person or organization
 * "'Enemies' within the context of a game cannot solely target a specific race, culture, real government, corporation, or any other real entity." (1.1.2)
 * 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.


 * Video games published by companies now out of business
 * Video game publishers often use emulation to rerelease older games on iOS. These emulators are "self-contained in their bundles," (2.5.2) that is, cryptographically locked to run only one game. An emulator not locked to one game would have to "download, install, or execute 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.
 * "don’t include names, icons, or imagery of other mobile platforms in your app or metadata, unless there is specific, approved interactive functionality." (2.3.10)


 * 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.
 * "Apps that create alternate desktop/home screen environments or simulate multi-app widget experiences will be rejected." (2.5.8)


 * 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. Or an application could let the user find a router by playing "hot and cold" with signal strength, 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.
 * "Apps may only use public APIs" (2.5.1)


 * Web browsers that implement HTML features that Apple has left out of Safari
 * You can't get Firefox with the Gecko engine on iOS. 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 prior to iOS 8. Uploads using the  element don't work either except for pictures and videos. Broken rendering in Safari has in fact caused users to abandon iOS.
 * "Apps that browse the web must use the appropriate WebKit framework and WebKit Javascript" (2.5.6)


 * Book reading programs that use the volume buttons to change pages
 * "Apps that alter or disable the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, or other native user interface elements or behaviors will be rejected." (2.5.9)


 * 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 occasionally backpedals:
 * Applications written in a cross-platform language
 * From April 2010 to September 2010, section 3.3.1 of the Guidelines banned apps from the App Store that weren't originally written in C++, Objective-C, or JavaScript. This was ostensibly targeted at Adobe AIR in the Flash CS5 era, but it caused problems for game developers who had used the Lua scripting language or the C#-driven Unity game engine.[citation needed] Apple repealed this ban by September.


 * Game makers
 * The Guidelines originally banned apps that "download code in any way or form" or "install or launch executable code". This was intended to require each application to be self-contained, but it ended up banning apps whose purpose is programming, such as a game maker that plays games that another user has created and shared. A collection of Commodore 64 games was rejected in June 2009 because users could reset the emulated system into the BASIC prompt, and it wasn't allowed back in until the developer specifically blocked the use of the BASIC prompt. But in June 2017, Apple replaced this with "Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user." (2.5.2)


 * Door-to-door preaching
 * Prior to around 2014, location services could not be used for "dispatch" or "fleet management", casting doubt on the suitability of iOS for apps that aid in proselytizing in a car group and tracking follow-up visits. The version as of early 2018 makes the intent clear, namely that iOS location is not intended for emergency services (5.1.5).


 * 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. In June 2019 after WWDC, Apple had added an exception to allow the user to begin a time-based trial using a "Non-Consumable IAP item at Price Tier 0" (3.1.1)

Apple completely refactored the Guidelines once circa 2017, renumbering all items. A refactor may cause things formerly specifically banned to instead be included in a larger category related to the intent, with collateral damage unrelated to the intent no longer affected. The refactor of 2017 dropped these:
 * Russian roulette (old 15.5) in favor of "Depictions that encourage illegal or reckless use of weapons and dangerous objects" (1.1.3). A paintball marker clearly identified as such is presumably not "weapons and dangerous objects".
 * A specific reference to Chatroulette from "Apps with user-generated content or services that end up being used primarily for pornographic content" (1.2, formerly 18.2). Case in point: Holla exists as of 2018-01-08.
 * A blanket ban on use of e-mail address to identify a previously established user account and the resources available to that account, such as Amazon book, music, and video libraries and Dropbox files. Apple doesn't want apps to require personal information that isn't directly relevant. Because the previous ban on apps that "require users to share personal information, such as email address and date of birth, in order to function" went too far, Apple weakened it: "except when directly relevant to the core functionality of the app or required by law." (5.1.1(ii)) This allows accessing externally purchased resources from an app (3.1.3).

Even if a product running iOS or iPadOS 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 linear bounded automaton, or Turing machine with bounded memory.

Many items in the Guidelines are outside the scope of Turing completeness for one of two reasons. The restrictions on objectionable content largely apply to data included with an app other than computer program itself, which is product identity rather than application mechanics. Others merely restrict permitted forms of input and output.

There used to be a proof here that iOS is not Turing complete, but changes to the Guidelines in 2017 rendered it no longer applicable. It relied on two things: a specific ban on Russian roulette by name, and a ban on apps that execute downloaded code, which forbids the user from keying in a Russian roulette program. Since then, the ban on Russian roulette has been subsumed into a ban on irresponsible use of firearms, implicitly clarifying that the ban wasn't intended to target the "roll a 1 and you're out" mechanic itself. In addition, Swift Playgrounds exists.

The proof had already shown signs of weakness since 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. 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.