
IOS App Store Submission Checklist - anything else to add? - stefanbutlin
https://ontestpad.com/library/201/ios-app-store-submission-checklist
======
aculver
I've got one you can add: iPad applications don't _have_ to support all four
orientations. However, whichever orientation you _do_ support (in our
instance, portrait) you must support the top-up and bottom-up variations
unless some special circumstance warrants only supporting one or the other.
Just had a submission rejected earlier this week for this reason. FYI, here is
the response we received from Apple:

10.1

We found that your app does not comply with the Apple iOS Human Interface
Guidelines, as required by the App Store Review Guidelines.

Specifically, we noticed your app only supported the top-up variant of the
portrait orientation, but not the bottom-up variant.

While supporting both variants of both orientations, each with unique launch
images, provides the best user experience and is recommended, we understand
there are certain applications that must run in the portrait orientation only.
In this case, it would be appropriate to support both variants of that
orientation in your application, e.g., Home button up and down.

Addressing this issue typically requires only a simple and straightforward
code modification. However, if you require assistance, the Apple Developer
Support Team is available to provide code-level assistance.

For more information, please review the Aim to Support All Orientations
section of the iOS Human Interface Guidelines.

~~~
baddox
Is there not an easy way to just say "turn my app upside down when the user
flips the device"? For most apps (i.e. ones that don't use the accelerometer,
etc.) this should be trivial, and shouldn't require any real effort from the
app developer.

Also, I agree with Apple that both orientations should be supported. Depending
on how you're holding or docking the device, and where it's convenient for the
headphone jack to protrude, it's quite conceivable for users to want to use
both orientations.

~~~
coob
Yes this is trivial.

------
sashthebash
Don't believe the crash reports in iTunes connect, they lie, your app does
crash... a lot, so add a crash reporter.

The best I found so far is the self-hosted QuincyKit (<http://quincykit.net/>)
or if you don't want to fiddle with your own server, use HockeyApp
(<http://www.hockeyapp.net/>).

------
psychotik
This is post-approval, but good to keep in mind.
[http://crazyviraj.blogspot.com/2011/08/dont-let-apples-
laten...](http://crazyviraj.blogspot.com/2011/08/dont-let-apples-latency-mess-
with-your.html)

------
coob
With regards to the HIG:

At a recent Apple iOS Tech Talk the engineer giving the session mentioned that
breaking the HIG wasn't expressly forbidden, but that you needed to "know the
rules in order to break them". Break them, if it's better than sticking to
them.

~~~
JimDabell
This isn't true. I've had two rejections for HIG violations - one was an
unclear error message (authentication failure-style message when no network
was available) and the other was orientation problems (one of the official
iPad app templates at the time supported three orientations by default, which
is against the rules).

Specifically, section 10.1 of the App Store review guidelines states:

> Apps must comply with all terms and conditions explained in the Apple iOS
> Human Interface Guidelines

It is very much the case that you can often _get away with it_ (see for
example all the apps with splash screens), but it _is_ "expressly forbidden".

~~~
coob
> It is very much the case that you can often get away with it (see for
> example all the apps with splash screens), but it is "expressly forbidden".

Neither of your instances of breaking the HIG made your app better, so yes,
what I said is true. It was said by an Apple engineer.

'Better' is arbitrary and entirely up to Apple, but if you have any UI nouse
you're going to get it through. They themselves routinely break the HIG.

The 'G' is for guidelines, not rules.

------
mirkules
Here's one to add: if your app has a in-app purchase of more than $100, your
app HAS to be rated 18+ because of a fear of teenagers can run up their
parents' credit card bills.

It's somewhat unfair because 18+ means adult content, but an app might not
contain adult content (as was the case with our client's self-help
books/videos).

~~~
dunham
Inkling is rated 12+ and seems to have more than one >$100 in-app purchase.
(e.g. the Biology text @ $120 and Supply Chain Management Text @ $140)

~~~
mirkules
It could depend on the reviewer, or the app could have been grandfathered in
before that policy went into effect? All I know is our client's app got
rejected with that as the reason (ours was rated 9+)

------
scott_s
_Does not "accidentally" contain such material, e.g. unrestricted web
browsing, explicit lyrics, unfiltered collections of books._

Is that still true? That is, they will still reject a new e-book reader
because it can read the Kama Sutra, and they would still reject an app that
allowed the user to navigate to a porn site? I have the Wikipedia app
installed, which I think would violate those terms.

~~~
xsmasher
Yes, unfortunately. If the app does have unrestricted web browsing then you
have to rate it 17+.

------
waterside81
Can someone elaborate on the no pricing information within the app point? If
we have an in-app purchase, we can't tell people how much it costs? That
sounds opposite to what I'd expect.

~~~
danielamitay
They specifically mean _hard-coded_ references. For IAPs and the like, you
should be querying the server for the localized price.

A good example is a "Share via Email" function that presents a pre-filled
Email Composer with "Download this $1 app." This causes problems if you happen
to change the price down the road (or if users are in a different economic
zone).

------
mirkules
This is a fantastic list! Thank you for putting this together.

Question: can you elaborate on what this means exactly, and why it's
necessary? "If you use encryption, you have registered with BIS and can
provide documentation."

~~~
stefanbutlin
This item on SO has more details:
[http://stackoverflow.com/questions/2135081/does-my-
applicati...](http://stackoverflow.com/questions/2135081/does-my-application-
contain-encryption)

------
uptown
"Lite versions must not prompt (up-sell) the full or paid version"

Is this true? I play a game that periodically shows an up-sell to the paid
version as an alternative to the app's advertisements.

~~~
TillE
By "prompt" I assume they mean an actual modal popup, or something else that
can't be ignored. Advertising seems ok, but forcing the user to make a choice
is not.

~~~
stefanbutlin
The "rules" (aka what gets accepted) about Lite versions seem hazy these days
- anyone have any up to date "reference material" on this (and I'll update the
list accordingly)?

------
sanderson1
Here's one to add to the list:

Don't submit any sort of tethering app. Chances are it will be approved and
removed within a couple of hours. Apple is 2 for 2 so far: Netshare and
iTether.

~~~
aaronbrethorst
Do the developers end up receiving payment for the copies sold before it is
pulled from the App Store?

~~~
briandear
Yes.

------
p_monk
You should remember you turn off NSZombies before submitting.

~~~
stefanbutlin
Thanks. Updated.

~~~
JimDabell
This isn't necessary. It's an environment variable Xcode adds while running
the executable, not something that is compiled into the application.
Furthermore it only works in the simulator, not on the device itself, so end
users wouldn't run into problems with it anyway.

------
shaggyfrog
Surprised to see "does not leak memory" is not on the list. That's a biggie.

~~~
stefanbutlin
I don't think Apple reject apps that leak "a bit". There's this older
discussion on SO: [http://stackoverflow.com/questions/1136511/does-apple-
reject...](http://stackoverflow.com/questions/1136511/does-apple-reject-
leaking-iphone-apps).

If you leak fast your app is unlikely to "not crash" and "remain responsive".

~~~
shaggyfrog
Well, I suppose it's true -- I have submitted apps to Apple that got approved
that leaked memory. But the leaks were coming from one of their frameworks
(WebKit).

So perhaps what I said should be amended to say: "Your app does not leak
memory, at least because of any code you wrote".

~~~
stefanbutlin
It's a worthy goal, but missing it still doesn't cause rejection. BTW, I do
include "don't leak memory" in my general-purpose template for testing (as
opposed to submitting) iOS apps here: <https://ontestpad.com/library/200/ios-
app-testing-template>

------
Aqua_Geek
> App looks well designed and of high quality

While this is wonderful to have on a checklist, let's be honest: the vast
majority of apps fall short of this goal (and that's putting it nicely).

------
AznHisoka
"e.g. Images and icons are not framed with a "polaroid" style (thicker at the
bottom) border"

Can someone give me an example of a Polaroid border? Is it just a frame around
an image?

~~~
karolist
It's a fat white border around the image. A variation of this often imitates a
photo stack each having such frame.

Google images keywords: polaroid frame, polaroid stack.

Sample: [http://blog.simplyjean.com/wp-
content/uploads/2007/11/polaro...](http://blog.simplyjean.com/wp-
content/uploads/2007/11/polaroid-stack-2007-11-05-starbucks.jpg)

What's interesting that this wouldn't be allowed, I think there's many apps
using this framing style in the app store already.

~~~
xsmasher
I assume that Polaroid has asserted some kind of trademark over the Polaroid-
style frame, but I couldn't find any such case on Google.

------
jen_h
Good list. Would add: Does not include the names of any other competing
platform (e.g., Android, Blackberry) in your description or inside the binary.

~~~
stefanbutlin
Thanks. Updated.

------
kayzee
Excellent checklist. Thanks OP. I also like how you are keeping it up to date
with commenter's suggestions.

------
lloeki
> _Lite versions must not prompt (up-sell) the full or paid version_

That one I see quite a lot. Example: _Cut The Rope Holiday Gift_ (which is
free) proposes me to get _CTR Original_ and _CTR Experiments_ on the last tab.

~~~
stefanbutlin
Agreed. I've reworded the Lite version checks a bit.

------
_corbett
I once had an app rejected as it was "not amusing" (it was a "Unicorn Chaser"
app). I also have had apps rejected for putting "iPad" in the wrong section of
the name. For example "X for iPad" is fine, but "iPad X" is not.

------
pdenya
"The app has a reasonably sized market, i.e. is not a tiny niche or for a
private audience" ...how do you distribute an app for a niche or private
audience?

~~~
MrScruff
Ad hoc distribution presumably.

<http://developer.apple.com/programs/ios/distribute.html>

------
larrik
Here's one:

If you are using Appirater or any other service that uses your app ID for
something. Make real real sure you are using the right ID for your app.

Easy to mess up on new apps.

------
yassim
Thanks for this. Double thanks for the fact I can subscribe to that page via
RSS (the links at the bottom of the page).

~~~
stefanbutlin
clarification: the RSS link is for the disqus-hosted comments, not changes to
the submission checklist contents.

------
mjs00
to add: if map is used, do not cover or obscure the Google logo

~~~
stefanbutlin
Thanks. Updated.

~~~
mjs00
Also maybe consider dropping:

> App state is saved when stopping the app and restored on next start

I believe you get this for 'free' with IOS 4 and greater, as the app now never
stops, it just suspends to the background when you switch between apps.

~~~
Mavrik
Not if the device runs out of memory or on older iOSes. You should always
address this case.

~~~
mjs00
I didn't consider out of memory condition, thank you. I wasn't worried about
older OS as practically speaking there are not that many folks on IOS 3 or
older, at least based on stats I've seen for iPhone. I don't specifically
target iPods, so maybe there are more of those at 3 vs iPhone. Thanks again -
great list!

------
signalsignal
0071 Make a million dollars

------
funnyGuy77
Any mention of my personal hero Chuck Norris is also an instant rejection. :(
I even tried a little s/Chuck Norris/Nuck Chorris/g but to no avail.
<http://bit.ly/oHvY1b>

~~~
xsmasher
This actually seems to be true; a dev friend who submitted a Chuck Norris joke
app got smacked down hard by Chuck's legal team. Now he seems to be on Apple's
list of untouchable content. The same dev had a Keving Smith app (similarly
unauthorized) that stayed up for ages.

