Engineering Speaks is where the SignEasy engineering brains stop by to narrate inside stories of innovation, engineering culture, and hacks that go behind ensuring the best user experience.
June 2015: SignEasy’s engineers are flying to San Francisco to attend the Apple Worldwide Developers Conference (WWDC) 2015. Apart from the thrill of catching up with iOS developers from across the globe, they have another agenda on mind. It is to gather intelligence about the cool features that Apple has planned to bring out with its impending iOS 9 launch and tap it to build the next level of delight for SignEasy users.
September 2015: Close to heels of iOS 9 launch, this happens:
— SignEasy (@getsigneasy) September 17, 2015
SignEasy emerges as the only business-grade e-signature app to be featured by Apple under its ‘Great Apps & Games for iOS 9’ list on the App Store.
Wondering what transpired between June and September 2015, that catapulted SignEasy as an Apple-featured app? Let me take you through the engineering story that went behind this.
When we got back from WWDC 2015
The first thing that the SignEasy development and product teams did was going through intense marathon discussions on the cool new features Apple had just announced, which included features ranging from search, internationalisation, app thinning to making the app adaptive.
The debates were primarily centered on what should be that one feature which we should make available for SignEasy users on the iOS 9 launch day and delight them.
After multiple rounds of debates, we all agreed on one thing. That we had to support size classes and use adaptive APIs throughout the app.
Reason being, with the debut of bigger iPhones and recently a giant iPad, it is quite evident that Apple will be releasing devices of different sizes almost every year. And this means we have to up our game by:
Also, with iPad Pro releasing in (then) few weeks and keeping in mind Apple’s future devices, we wanted our app’s UI and UX to feel at home on any future device and support features like multitasking from the day of release.
This was a strenuous task for the team as we were using different storyboards for iPad and iPhone, different view controller hierarchies for each device, and device specific checks were scattered all over the code. Hence we had to redo the UI of every screen in the app and handle the impact of these changes on the code.
How we put the plan into action
Here is how we went ahead and got it done
1. Using LaunchScreen.storyboard instead of assets
This is the first step towards supporting all orientations and multitasking. It helps avoid numerous launch assets for different devices and orientations. It is as simple as creating a new storyboard and dragging a view controller which would act as initial view controller. In the General tab, select this storyboard as Launch Screen File.
2. Using Adaptive APIs
Apple has done a great job in providing different set of adaptive APIs for us to leverage. UISplitViewControllers and UIPopoverPresentationControllers became the backbone of our new iOS9 app.
3. UISplitViewController as a RootViewController
Earlier we had different root view controllers for iPad and iPhone. Apple made UISplitViewController adaptive and available on iPhones as well. This meant we could use a single root controller for all the devices and UIKit would take care of the presenting it in the appropriate way. For instance, see how UISplitViewControllers adapt to different size classes on an iPad.
Unification of the iPhone and iPad root view controllers is one of the great things about using adaptive APIs as it saves us the need of having device specific logic in the code. To customise UISplitViewController we had to play with its delegate APIs. They took some time to master, details of which we will leave for another day.
This new adaptive API replaces UIPopoverController and introduces popover on iPhones. UIPopoverPresentations adapts itself to full screen presentations on compact width or a popover on regular mode. Here is UIPopoverPresentationController in action:
5. Universal storyboards with size class support
This involved moving away from device based storyboards to universal ones with adaptive design for all the size classes. UIKit does the job of loading appropriate size class from the storyboard. Complexity depends on the UI we are dealing with.
6. Improvements in XCAssets
XCAssets have been the lifeline for asset management in iOS projects. XCAssets now allows us to provide assets according to different size classes and loads appropriate assets when needed. UIImage also provides an API-+imageNamed:inBundle:compatibleWithTraitCollection: to load an appropriate image asset from any bundle that best matches the desired trait. It came in really handy for our walkthrough screens where we had to provide different images for different size classes.
The upshot of above efforts is that our app’s UI is compatible with all devices and orientations. Bigger iPhones and iPads demand adaptive design to give users the best experience possible. It’s time we move away from iPhone portrait-only mindset and encourage adaptive UI for iOS apps.
SignEasy app running on iPhone 6plus landscape. Notice how it adapts to bigger size of iPhone 6plus analogous to UX on an iPad:
Then we rolled out our update for iOS 9
And our efforts paid off!
Shortly after making the all new SignEasy experience available for our users on iOS 9 launch day, we got featured by Apple under its Great Apps & Games for iOS 9 list on the App Store and garnered great 5 star reviews.
So, what’s next?
Since we wanted our new app to be available to users on the iOS 9 launch day, there was limited time that we had at hand. So we chose to focus on making our app adaptive. In addition to this, I feel Apple has done a great job with features such as search, internationalisation and app thinning which we are looking at leveraging in the near future.
Stay tuned for more such interesting features lined up in our future releases and yes, the engineering stories behind those.
If you have any queries or wish to share your own experience of building an iOS9 app, shoot a mail to [email protected] and we would be happy to chat!
Does all above seem exciting!! to you?
Are you a kick ass iOS developer?
Do you love Apple design?