Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Future proofing your iOS apps

Future proofing your iOS apps

When developing our iOS applications we want it to be able to support the latest hardware and software. When we started out we did not anticipate for an Apple Watch or a widget. In this talk I'll explain our journey from being a rigid and single track application to becoming a flexible scalable application architecture with which we can now easily adopt new features and hardware. I would like to give a sneak peek into our transformation into becoming a modularized app.

By Pim Stolk

Powered by http://xebia.com

do{iOS} conference

November 09, 2015
Tweet

More Decks by do{iOS} conference

Other Decks in Programming

Transcript

  1. powered by
    Future proofing your
    iOS apps

    View Slide

  2. Who of you think about the
    application architecture before you
    start on a new project or feature?

    View Slide

  3. whoami
    $ whois pimstolk
    Whois Server Version 2.0
    * Software Engineer @ ING
    * Works on the Mobile Banking App
    * Like Electronics
    * Loves Domotica
    * Has to many motorbikes
    >>> Last update of whois database: Sun, 01 Nov 2015 16:00:16 GMT <<<
    For more information on this Whois status codes, please visit
    https://www.linkedin.com/pimstolk

    View Slide

  4. ING and Team

    View Slide

  5. Lets go back to 2010
    • Start of Mobile Banking
    • Focusing on the iPhone

    View Slide

  6. The iPad
    • Last minute decision
    • Focus only on iPhone
    • Hire extra people to meet the deadline

    View Slide

  7. As time went by….
    • We added loads of universal new features
    • IS_PAD()

    View Slide

  8. A new programming language
    • Adopt Swift into our code
    • Huge Objective-c codebase
    • SourceKit
    no taylor swift jokes
    no taylor swift jokes

    View Slide

  9. New Stuff
    • Apple Watch
    • Notification Center Widget
    • AppleTV

    View Slide

  10. We were not ready

    View Slide

  11. The problem
    Reuse of code

    View Slide

  12. App Stats
    • Approaching the 1 million lines of code.
    • More then 40 different developers > more then 40000 hours
    of coding.
    • More then 25500 commits
    • Around since of iOS3
    • autorelease retain
    • Introduction of ARC
    • Nib/Xibs/Storyboard/Sizeclasses/NSURLConnection/
    SplitViewController/ and so much more
    • More then 2.000.000 active users

    View Slide

  13. Multiple solutions
    Don’t Repeat Yourself

    View Slide

  14. Red or the blue pill?

    View Slide

  15. Different Targets
    • Link all the files to different targets
    • Reusable classes

    View Slide

  16. Different Targets
    • Link all the files to different targets
    • Reusable classes
    WRONG!!!

    View Slide

  17. Different Targets
    • Not Scalable
    • No clear overview of what is going on
    • Easy to break the build

    View Slide

  18. Dynamic framework
    • Easy to work on in a big team
    • Support Swift
    • No need to relink when updates
    • Final Linked Image
    INGFoundation
    INGFoundation.framework
    BalanceFetcher
    BalanceFetcher.framework
    CryptorKit
    CryptorKit.framework
    Sub projects
    ING
    INGFoundation.framework
    BalanceFetcher.framework
    CryptorKit.framework
    ING Project

    View Slide

  19. Dynamic framework
    • Versioning
    • Testing
    • Separate out the UI

    View Slide

  20. Challenges
    • Drop iOS7
    • #import problem
    • Keep delivering features

    View Slide

  21. Things still to figure out
    • Inter-framework communications
    • Who does the communication?
    • Who owns the data?
    • How do you navigate from screen to screen.

    View Slide

  22. The future of our app
    • Replace Incrementally
    • Modular
    • Functional

    View Slide

  23. Wrap up
    • ING Mobile Banking Journey
    • Growing number of devices with different purposes
    • How to deal with the scalability of your application
    • Implementation of dynamic frameworks

    View Slide

  24. Questions?

    View Slide

  25. We Are Hiring!

    View Slide