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 full-size slide

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

    View full-size 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 full-size slide

  4. ING and Team

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size 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 full-size slide

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

    View full-size slide

  10. We were not ready

    View full-size slide

  11. The problem
    Reuse of code

    View full-size 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 full-size slide

  13. Multiple solutions
    Don’t Repeat Yourself

    View full-size slide

  14. Red or the blue pill?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size 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 full-size slide

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

    View full-size slide

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

    View full-size 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 full-size slide

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

    View full-size 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 full-size slide

  24. We Are Hiring!

    View full-size slide