Check this blog post, it was useful for me: blogpost
It contains very detailed lists for submitting apps, and also for starting a new app.
It contains such a useful points:
In the “Edit Scheme” section of Xcode, “Archive” should be set to
“Release”. Release builds must hide log statements and turn off any
test code/test screens used for development.
NOTE: Due to compiler optimizations, release builds can sometimes
function differently than debug builds. It is best to start testing
release builds a few days before the release to the App Store in order
to capture any possible issues.
Make sure the app is communicating with the correct production servers
(using HTTPS).
Make sure all test screens are hidden.
Make sure no sensitive data is printed to the console.
Make sure Analytics is working with the correct production account.
Make sure services such as Urban Airship are working with the correct
production account.
Also I found other useful link now:
APNS
Make sure that APNS certificate includes your app’s BundleID.
You have created distribution APNS certificate.
Your server is using distribution APNS certificate.
Check that notifications are working on different iOS versions (pay
attention to iOS8 where API was changed). Versioning
Do not hardcode anywhere in sources things like isBeta=YES or
DEBUG=YES.
Make sure that the app icon or name doesn’t contain “beta” word.
Update app version and build version. Never hardcode version inside
app (use CFBundleVersion instead).
IMPORTANT Make sure that the new release is installed over the old
version in the correct way:
** Install app from AppStore. Create ad-hoc build and install it over the old version.
** Check that data from NSUserDefaults is read in the correct way (app doesn’t crash trying to read non-existing keys).
** Check that user doesn’t lose any of his info after update.