Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
iTunes App Store Submission Presentation
1. Evan Kirchhoff
Senior Software Engineer
Ansca Mobile
iPhone Provisioning Portal setup and
App Store submission
iOS 4.0 Development Training Camp
Hacker Dojo, Mountain View, California
August 7, 2010
2. Today’s topics:
Setting up the Provisioning Portal
Preparing your App Store submission
The review/rejection process
Increasing your app sales
Some cool tech demos with Corona
6. App testing was complicated
and expensive
In this example, the mandatory test fees were $800 per app per device model;
test failure over trivial technicalities was very common
7. Other people got
most of the money
Other People You Other People You
25%
30%
70%
75%
Then Now
24. ...but you’ll need to generate app-specific IDs if
you want to use Apple services like Push
Notification, In-App Purchase or Game Center
25. Provisioning Profiles:
three types
1. Developer - for debugging
(expires in 3 months)
2. Distribution (ad hoc) - for beta
testers, using one of your 100 devices
(expires in 1 year)
3. Distribution (App Store) - for
shipping your final app to the store
26. What are Provisioning Profiles?
Provisioning Profiles bring everything together:
They associate certificates, AppIDs, and devices
(They must also be installed on the test devices; either
Xcode Organizer or iTunes can be used for this)
33. Be sure to use your App Store distribution profile
(If you build using Corona, you’ll won’t see this screen)
34. To submit your app
(Only available at sufficient account privileges!)
35.
36.
37. If there’s a name you really need,
get it while you can!
Note that the iPhone will only display names up to
12 characters without shortening them with “...”
(It’s possible to use a long name in the store, and set a shorter display name in Info.plist)
38. What date to choose?
Your release won’t happen before this date,
but may occur unpredictably after it!
Some people change this date each night to tomorrow’s date, during their review period,
to try and optimize their initial placement on the App Store’s recent-releases lists
40. Gather all this information before starting
your submission
Description field no
longer indexed for
iTunes app searches
(due to rampant
keyword-stuffing in
this field)
100-character
maximum (eliminate
spaces to make room
for more keywords)
“Copyright” field can be
whatever you want to
show in the store
as the author/company
App Store reviewers will want to inspect all parts of
your app, so include test passwords if necessary
43. This large icon must look basically
the same as your app icon
(it’s safest to be exactly the same)
You get up to 5 screenshots -
use them all!
Use PNG files for best results
49. You must run Application
Loader to upload your app
But it is actually helpful!
50. You must run Application
Loader to upload your app
Zip your final
app file before
uploading
51. If using Xcode, the release build file can be found in
[Project folder] > build > Release-iphoneos
(If using Corona, simply click the “Show in Finder”
button after building)
Right-click this .app file and choose “Compress” to zip it
52. Application Loader finds
common build problems
This saves a lot of time, compared to the
App Store rejections that would have
happened otherwise!
53. After the upload
“Waiting for Review”
(USUALLY A FEW BUSINESS DAYS)
“In Review”
(ANOTHER 3-5 BUSINESS DAYS)
“Requiring
“Ready for Sale!”
unexpected additional
(CONGRATULATIONS!)
Your app will appear on the
time for review”
store within an hour or so. (OH NO - THE DREADED APP LIMBO)
Some apps get stuck here for weeks
or months...experiences vary widely
54. What happens during review?
Automated scanning for private Apple APIs
Some kind of human judgement regarding
“inappropriate” app content
A little bit of intellectual property
monitoring (seems hit or miss)
Actual human testing of the app (seems to
be about 5 minutes on average, mostly
checking for crashes, major style violations,
or obvious behavior problems)
55. What if they reject your app?
Usually they’ll give you a reason:
56. But some rejections are
unpredictable!
http://www.theregister.co.uk/2010/06/01/apple_boots_widgety_apps_from_app_store/
58. You have 5 friends with
iPhones: call them now!
You really want to get out of “No Ratings” status
quickly, but that requires at least 5 ratings
(no written reviews needed, just the ratings!)
60. Ratings totals are a rough
proxy for sales totals
...and the multiplier may be around 100x (!)
Obviously a very rough estimate, but seems correct to within an order of magnitude
61. Use your app to cross-promote
your other apps
This button links to an App Store search by company name
62. Use Facebook, Twitter or social
gaming networks
(e.g., OpenFeint, or Apple’s Game Center)
63. Some kind of promotional website is a good idea...
Canabalt features the fully playable game on its website for free,
yet sold very well on iPhone at $2.99!
(Also note that you can use iTunes affiliate links to get a 5% revenue bonus)
64. App review websites
?
Without naming names, there may be a
“pay to play” aspect in some cases
Some developers boycott paid review sites; it’s your choice*
*Personal view: “All’s fair in love, war, and search engine optimization”
65. You could also try advertising
!
The apps market is still so young that
virtually no real advertising takes place!
(This will presumably change as app budgets increase)
66. Use these
to give free
apps to
friends or
reviewers.
You can get
50 codes
per app
version.
67. Promo codes are redeemed in iTunes:
They expire quickly - don’t generate too many at once!
68. With 225,000 apps, isn’t the
App Store “full”?
Was the web “full” in 1994?
(Note 1994 Yahoo interface very similar to today’s App Store!)
69. App Submission case studies
(all information anecdotal)
ABC Animals
Pad Racers
420 Reminder
72. What is Corona?
OpenGL accelerated graphics engine
Develop mobile apps using a small
scripting language (Lua) rather than
C++, Objective-C or Java
Cross-platform development: iPhone,
iPad, Android from the same source
74. What is Game Edition?
Physics engine included (Box2D)
Animated sprites & “sprite sheets”
Social gaming features
75. Corona SDK + Corona Game Edition
all previous features, plus:
* Full Lua scripting language
* Hardware-accelerated graphics
* Improved texture memory handling
* GPS, compass, accelerometer
* Animated sprites with independent
* Networking (TCP, FTP, HTTP, etc.)
framerates per sprite sequence
* Camera and photo library
* 2D physics simulation
* Video playback (streaming or local)
* Simple and complex physical bodies
* Audio (sound effects or MP3)
* Physical properties (mass, friction,
* Animation and transition libraries
bounce)
* Vector drawing APIs (shapes and lines)
* Joints, wheels, hinges, pulleys, etc.
* Native UI (keyboard, etc.)
* Collision detection, including pre- and
* WebKit browser views
post-collision events
* SQLite database
* OpenFeint game network support
* File read/write
* (more social features TBA)
* Crypto (md4, md5, sha1, sha512, etc.)
* Facebook and Twitter libraries
76. What can you make?
(These are not Corona,
but represent the target
market for Game Edition)
77. What can you make?
(Made in Corona Game Edition and shipped to the
iPad App Store recently)
78. How does Corona work?
Native Engine:
C, C++, Objective-C,
OpenGL
Exposed Scripting:
Lua
Lua is designed as an embedded language
(Very small, very fast, runs alongside native code)