Now that NDA has been lifted by apple and JQuiz is also released on app store I can write in detail about my experiences with JQuiz, my second app for iPhone and my first paid app.
When I was developing Festivals, it was more for fun. I wanted see if I can really write an app for iPhone. And I had already decided that it would be free. So there was no pressure. With JQuiz, it was totally different story. While Festivals was simplest application possible, JQuiz is quite feature packed and I was trying hard to make it as professional as possible. As it was going to be a paid app, I wanted to make buyers really happy for their money.
So here are the lessons that I learned. Most of the following things are quite technical, so please excuse me if you cant follow them.
1. I learned how to play sound on certain events.
2. JQuiz contains quite good amount of animation, creating simple animation is a piece of cake on iPhone, so initially I put a lot of animation, but just before releasing it to app store I removed some, cause it was looking to flashy.
3. HTML and CSS is close to my heart, iPhone contains a web view control where you can show html. In JQuiz, “About” and “Results” pages are rendered in web view with integrated style-sheet. While rendering these views I was not able to figure out how to show images, cause web view would not recognize the image path. After struggling to search for a while, I had to decide not to embed images in web view. But one day a kind developer replied to my question on apple dev forum and helped me out on this. I am really thankful to him.
4. JQuiz contains a Settings window where user can choose his settings related to ‘Sound’, ‘Timer’ and ‘Show answer’. This needed ‘write’ operation. There are several ways to store settings and retrieve them. I used the easiest. NSUserDefaults makes read-write user settings really easy.
5. Main quiz window in JQuiz, was the most complicated screen. It contains a timer, and scrollable table cells. At some point was really frustrated about how to show long questions and long answers on such a small screen. When I found that table view can solve my problem, it was like Eureka! Eureka !!. But this solution presented a new challenge for me. While user was scrolling the question, the UI thread would suspend and it would cause timer to pause. After searching a lot I had given up on this, but one kind developer responded to my question on apple dev forum and he even supplied sample code. I couldnt thank him enough.
6. I was skeptical on whether to allow user to email the results or not. But finally I decided that user should be able to email the results page, cause web view is really tiny and user would surely like to see the results on big screen. But allowing email presented me few challenges. iPhone email doesn’t allow attachments to send programmatically. Everything needs to be part of email body as a http url. This means escaping everything to so that it can pass url encoding rules. & and some special characters are reserved wouldn’t encode the way I want. Finally I removed some questions containing special characters that wouldn’t escape.
7. I am coder by heart and can do non-stop coding for several hours without leaving my seat. This also means I am bad at graphics design. It took me a boatload of time to decide on logo, colors, icons and other appearance details. In fact I spent 60-70% of time on creating icons and logos and deciding on colors. This also lead me to learn photoshop in depth. Now I am quite proficient in Photoshop.
8. As you know iPhone has an accelerometer built in. In JQuiz, to skip a question, you just need to shake your iPhone and it will present you with next question. I was very happy when I achieved this functionality. Its a lot fun to shake your iPhone when you think you cant answer a question and just want to pass it.
9. I became quite proficient with Objective-C’s syntax and in fact have start liking it. The language and cocoa touch frameworks are so easy yet powerful that you never feel you are writing some complicated stuff that would convert into cool animation and sound effects.
Overall, it was a great experience in itself.