We recently added a great feature to ArtikPix. Now, after a student practices the word, they can press a small button and be prompted to use it in a sentence as well. This is a much requested feature that is also a best practice in speech therapy. I’m very proud we were able to get it in so quickly.
Along the way, I tried to fix a long standing bug. In order to hear each word clearly, the app is set up to queue them up, and only play a new word when the last one ended. The problem would come up if the user recorded the students voice before a word ended. This would interfere with the notification that the word ended, and cause the next word to never be played. In fact, this caused no more words to be played until the app was ended.
This was made much worse by 4.x. Now that the home button only caused the app to be suspended, the words would not play until the user double clicked and deleted the app from the recent app list. This was difficult enough that users assumed the app was broken, and to some it seemed only rebooting the device would restart the sound.
So I researched a bit. The easiest solution turned out to be to allow sound playback and recording at the same time. This is known as changing the Audio Session Category to allow Play and Record. It solved the problem, and appeared to work well. We tested it on 2 models of iPhone, the latest iPod Touch, and the iPad. It seemed a small enough change to put out with basic testing, after all the testing of the sentence update.
Any developers recognize the step we forgot? By default, changing the Audio Session to kAudioSessionCategory_PlayAndRecord forces the audio to be played through the ear piece on the iPhone. It’s bad enough that this made the sounds quieter, but on the 2nd generation iPod Touch, there’s no ear piece, so there’s no sound at all.
The worst part is we did not realize this when the update was approved by Apple. So it took a little bit to recognize the problem when the support emails started coming in. And I had to wait until my day job was over to do anything about it.
To make it even worse, I did not have a 2nd generation iPod Touch. Most of the time, my iPhone 3G without cellular service acted the same, so I never bothered to get one. So I had to build a new version, and wait for Eric to test it. It took a couple of builds to get it right. For some reason, my stubborn brain did not seem to like the idea that you had to set the Audio Session active before setting the new category and forcing the sound to play out the main speaker. But I finally got it right, and Eric reported the app was working again on the older iPod Touch.
To top it off, once I had it fixed, iTunes Connect was down, so I could not submit the new version. I kept trying until Apple finally put up the “Scheduled Maintenance” page. I had to go to sleep knowing the fix was even further delayed. Luckily, the next morning, I got the update submitted just in time. Apparently developers on the iPhone Dev Forums reported that the Application Loader stopped working again for much of the day.
Since this could affect many of our customers, I also had to request expedited review from Apple for the first time. I hope our users can forgive us while we wait for Apple to approve the update that will bring things back to normal. And I hope we’ve learned our lesson about testing all the different devices before submitting. Anyone have a 2nd generation iPod Touch for sale?