We've found that when we are developing an app at lightning speed, it can be a struggle to keep team members and beta testers on the newest build. Existing solutions entail a lot of friction, requiring manual steps to install updated builds of apps and hours or days of approval time for new builds. When testing on a large fleet of devices, a solution that works instantly and completely invisibly in the background would be a huge improvement. That's what we built with Slipstream.
What it does
Slipstream continually delivers updated app builds to enrolled iOS and Android devices. As soon as a developer pushes a new commit to a designated git branch, the app is built automatically on an Azure cloud server. A push notification is sent to all devices, which instantly install the new build of the app without any user interaction required.
How we built it
Slipstream uses git and Jenkins to receive new commits and fire off builds for Android and iOS. Once the app is built and all tests have passed, it uses Parse to send a push notification to the Slipstream updater on all enrolled iOS and Android devices. The Slipstream updater seamlessly installs the new version of app within seconds, completely invisible to the user.
Challenges we ran into
iOS is naturally a very locked-down environment. Hours after the Android updater was working end-to-end, we were still struggling to get the iOS updater to achieve our stated goals. Thanks to the help of fellow PennApps hacker and iOS expert Conrad Kramer, we were able to reverse-engineer a private, hidden API on iOS that did exactly what we wanted!
Accomplishments that we are proud of
We believe this is the first truly automatic solution for continually updating apps on iOS outside of the App Store. By leveraging private APIs - information that isn't available anywhere on the web - we can do what existing solutions can't.
What we learned
Many behind-the-scenes tricks on iOS to make it do things it was never intended to do :)
What's next for Slipstream
We want to make Slipstream available to any team to eliminate the friction of updating apps on development and test devices. This will involve writing clear and complete documentation and building out our web service to allow anyone to Slipstream their app.