As an iOS freelancer, I work with many different clients every day, who all have their own processes and workflows. Distributing ad-hoc builds is just a small part of developing an app, but it’s usually the first experience a client will have with your work, so it’s important to make this process as smooth as possible.
There are many different ways of distributing builds. TestFlight and HockeyApp are two well known services, while Over the Air (OTA) is more of a manual style of distribution. Each have their own advantages and disadvantages, but the main thing I’ve noticed is that every client has different needs and different preferences – there’s no one size fits all option.
With this in mind, I’ve been developing a tool to make the process of distribution more uniform, so that regardless of what service or method you might use, the interface remains consistent. It’s very much a work in progress, but here’s how it looks today:
After selecting a IPA file, you have the option to select your destination. Currently the app supports Dropbox, FTP, and SFTP, but I’ll be adding TestFlight, HockeyApp and Amazon S3 in the near future. The Directory might be the name of your client, while the Files section lets you select which files to upload. Finally, there’s a section for release notes. Tapping Go will create the relevant Property List and HTML files necessary for OTA distribution, and then upload all the files to your chosen destination.
The nice thing about controlling this process via code is that we can include some handy information on the HTML installation page, or in the case of TestFlight or HockeyApp, this information gets passed on directly:
It’s usable currently, but there’s still a lot of work to do, some of which includes:
- more destinations, eg. TestFlight, HockeyApp, Amazon S3
- ability to upload different files to different destinations. For example, you might store the Property List in Dropbox, and your HTML file on an FTP server
- ability to upload dSYMs
- ability to upload other related files (eg. logos etc)
- ability to customise the output HTML
- proper user preferences and account setup
- options for post-upload tasks, eg. shorten URL for the HTML file, send an email, etc
- ability to save and load different arrangements for different clients
I also need to spend a lot more time on the interface. Being my first OS X app, I’ve found the UI to be quite a challenge – even just knowing which controls to use can be difficult.
With Apple’s recent acquisition of TestFlight’s parent company, the future for this tool is a little unclear at this point. The main thing is that I’m finding it useful today. If it sounds like it might be interesting to you as well, let me know, I’d love to hear your feedback.