In August 2008 I decided I wanted to teach myself to develop software for the iPhone with my limited amount of free time. I decided to buy a MacBook which happened to be the first non-Microsoft computer I had ever owned. After nine months and $100 for an iPhone developer license, I finally have something to show for it--assuming of course that my app (Lexify) gets approved by Apple for distribution on the iTunes App Store.

As I was doing the actual app submission last night and today, I decided to write down the issues I ran into. Here's what I came up with:
  1. I first started to submit my app a day or two ago when I found out I had to have a large app icon (although I did have the small one that's displayed on the iPhone home screen). Apparently this icon is only displayed in the App Store but it's required anyway. I ended up working on that instead of submitting the app that night.
  2. As I was developing my app, I had been using png image files which worked fine. However, the submission page says the app icons, launch image and screen shots must be either jpg or tif files. I decided to take my chances and submit my png files anyway for the full Lexify version (but used all jpg files for Lexify Lite the next day).
  3. Apple asks for a SKU number for each app. I had to Google around a little to find out this is just a number you arbitrarily make up. I ended up using ten-digit numbers, the last eight of which were today's date.
  4. Building the application for distribution on the App Store turned out to be an arduous process. I of course had not tried this until I was in the middle of the submission process. Despite the fact that there are detailed instructions on the iPhone developer site, the hassle of creating and installing provisioning profiles, certificates and App IDs added a good hour to the submission process. Once these were in place, configuring XCode to use them took another hour or so. One snag here was that I had never used XCode's "Build Log detail view" that was mentioned in the "Verifying a Successful Distribution Build" step. I finally discovered I could get to this by opening the Build Results window and clicking a couple toggle buttons (which were turned off by default) to display more build information.
  5. The next thing that threw me off was choosing a "price tier" for Lexify. The choices were "free", and the numbers 1-85. I wanted to set my price at $4.99 but I had no idea which tier this equated to. I decided to just choose a tier and then realized after selecting this tier that a table gets displayed showing the dollar value for the selected tier. Tier 5 was $4.99 in US dollars. After this, I finished submitting my first iPone app! However, I still wasn't done. I also had a Lite version of my app to submit.
  6. Along the way, I decided to build Lexify Lite with the same profile, App ID, and certificate that I used for the full version. Bad idea! I got to the the file upload step of my second app submission and could not upload the build because the file or profile wasn't valid. At this point I went to bed in frustration. The next day I decided to go back and create a new provisioning profile for the same certificate and App ID I used for the full version. I made sure my App ID ended in .* to allow it to be used by other applications. I changed the XCode project build settings to use this new provisioning profile and then did a rebuild. I entered my app info again to get back to the file upload step, held my breath, and clicked the upload button. It worked this time. Lexify Lite was now submitted. But was I done yet? Not quite. I hadn't entered any financial information yet.
  7. After entering into a financial contract with Apple, I had to enter my bank account and tax information. I briefly ran into a question about whether I was an "Exempt Payee" or "Subject to Backup Withholding" and ended up choosing Exempt. Then I was asked for my Bank's "swift code", whatever that was. I called my bank and was told a swift code was only necessary for international wire transfers and that otherwise the routing number was used. I then found I couldn't use my routing number as the swift code and called my bank again, this time asking them to give me the swift code. This time it worked.
So that's it--now let the waiting game begin!