As with all of our native development projects, we started this project by thinking about how the data would be structured and saved. To allow users to save, edit, and delete an unlimited amount of photo booths within the application, we started by designing and implementing a local CoreData database. All the information, photos, settings, and layouts are stored in this central database.
Because a photo booth needs to loop through the photo taking process theoretically thousands of times in a single night, there was a real focus on making this application as memory efficient as possible. All camera work is done using AVFoundation - an extermely low-level API that uses very little system resource and is able to capture images and persist them to disk very quickly and efficiently.
As with any photo booth, sharing is at the heart of what this application does best. After a users takes their photos, they have the ability to share them two different ways. First, they can print them out on the spot if both a WiFi connection and an AirPlay compatible printer are present. Second, they can immediately email the photos to themselves over a WiFi or cellular connection - thanks in part to an in-house uploader and storage service which resides on our servers.