One of the key tasks with iphone software development is getting other people to test your app before you release it on the app store. Apple have a reasonably straight forward setup for testing your code on your own iphone or ipod touch, but to get others to test it you need to create ad-hoc builds. Basically ‘Apple ad-hoc means the same as ‘beta version’. It’s a shame they called it ad-hoc because it is atypically difficult to get right and you end up googling for answers, but find yourself swamped in search results relating to adhoc wifi networking.
With my first app, I had one adhoc tester with an iphone. Amazingly this first attempt at making an adhoc app worked first go. You have to create an adhoc provisioning profile and then compile your app against that profile and check a few things. Apple have that part reasonably well explained.
My problems started with this new game I’m working on. The graphics guy working on it had an ipod touch and a PC (ie. no Mac) and I wanted to get some of the builds I was doing so he could check his graphics out and the general playability of the game. So I found out the unique id of his ipod touch, added it to my adhoc provisioning profile and built the app against this, and sent it to him.
He said the app sync’ed fine from itunes and the icon appeared on his ipod touch, but it kept saying “the blah application cannot be opened’ when he tapped it to run it on his device. From that point I tried a whole heap of different things. iphone developers probably get used to this after a while; restart Xcode, try a clean all a few times, double check the Info pages on the project and target settings to make sure the right provisioning profile is selected. I even created a new provisioning profile with just this guy in it. But no go.
Eventually I found out that the ipod touch had been jailbroken. Ahah!!! Of course if you google for ‘jailbreak cannot open application’ you get a zillion results. I could not be bothered trying to work them out, so he just restored the ipod touch’s OS and the app installed first go.
The other common hoop I hit with ad-hoc testing is to make sure the testers delete the app from their device and in itunes before adding a new version. I kind of know why this is required. Its not required all the time, but it certainly makes testing easier if the beta testers get used to doing it.