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

Building Unsplash for iOS

Building Unsplash for iOS

This presentation covers the various aspects of building Unsplash for iOS.
• Original concept, re-design
• How we work
• Unusual technical bits
• Stats

Presented at CocoaHeads Montreal on September 20th, 2018.

Olivier Collet

September 20, 2018
Tweet

More Decks by Olivier Collet

Other Decks in Programming

Transcript

  1. Building Unsplash for iOS
    OLIVIER COLLET. COCOAHEADS MONTREAL. 20.09.2018

    View full-size slide

  2. Ryan Loughlin

    View full-size slide

  3. Unsplash
    • Beautiful photos you can download for free and use for anything.
    • Gifted by the most generous community of photographers.

    View full-size slide

  4. The process
    Patrick Schneider

    View full-size slide

  5. Our mobile strategy
    • We’re a platform that helps creative people.
    • The transition from computers to mobile devices is starting.
    • It’s the beginning of this transition.
    • We’re early, and not in a rush.

    View full-size slide

  6. Valdemaras D.

    View full-size slide

  7. An app for iPad
    • iOS 11 was a big step for iPad
    • iPad is slowly replacing computers for creative work
    • Drag & drop + photos = !
    • Why not for iPhone too?

    View full-size slide

  8. iOS app First attempt
    • Browse photos
    • Browse collections
    • Search
    • A dedicated wallpaper section
    • Drag & drop

    View full-size slide

  9. George Desipris

    View full-size slide

  10. iOS app October 2017

    View full-size slide

  11. BORING! "
    Charles Deluvio

    View full-size slide

  12. iOS app Simplified
    • Cut cut cut
    • Keep the basics:
    • New photos
    • Featured collections
    • Search

    View full-size slide

  13. iOS app March 2018

    View full-size slide

  14. iOS app March 2018

    View full-size slide

  15. Samuele Errico Piccarini

    View full-size slide

  16. Launch April 5, 2018
    • No profiles
    • No authentication
    • No ability to like or collect photos
    • No photo upload

    View full-size slide

  17. Fabian Struwe

    View full-size slide

  18. The team
    • Mikael - Big picture + vision
    • Luke - Big picture + roadmap
    • Kirill & Charles - Design
    • Olivier - Development

    View full-size slide

  19. Planning updates
    • 6-week cycles
    • Release an update every cycle
    • Photographers profiles (released)
    • Photo submission (upcoming)

    View full-size slide

  20. Some tech stuff
    Carlos Irineu da Costa

    View full-size slide

  21. On-demand resources
    • Images for the on-boarding flow
    • Downloaded when downloading the app
    • Discarded once the on-boarding is completed

    View full-size slide

  22. Nathan Dumlao

    View full-size slide

  23. Storyboards
    • Best code is no code
    • A storyboard per main flow
    • Wrote a script to use identifiers as constants in the code

    View full-size slide

  24. Donald Giannatti

    View full-size slide

  25. Dependencies not welcome!
    • Facebook login using a WebView, no FB SDK
    • Re-wrote the 1Password extension in Swift
    • Wrote a Swift tracker for Snowplow (analytics)
    • Remaining dependencies:
    • Reachability (will keep… maybe)
    • CoreAnimator (will ditch)

    View full-size slide

  26. Chris Fuller

    View full-size slide

  27. Networking
    • No shared API client
    • Each request is independent
    • Requests are subclasses of Operation

    View full-size slide

  28. David Emrich

    View full-size slide

  29. View Controllers
    • No coordinator or flow controller
    • PhotosViewController is used a lot
    • As a child view controller sometimes
    • Remains generic, a datasource controls its content

    View full-size slide

  30. Custom transitions
    • Tons of work!
    • Currently spaghetti code, needs to be refactored
    • TONS of work!

    View full-size slide

  31. Mark Cataldo

    View full-size slide

  32. Drag & drop
    • Drag to other apps is easy
    • Receiving a drop is a bit more complicated
    • Custom Drag to Download widget
    • Inspired by Things
    • Pythagorean theorem #

    View full-size slide

  33. Pythagorean theorem #

    View full-size slide

  34. Nathan Peterson

    View full-size slide

  35. Challenges
    • Testing on-demand resources
    • Those crazy custom transitions

    View full-size slide

  36. Stats
    Chris Liverani

    View full-size slide

  37. Downloads / Source

    View full-size slide

  38. Ryan McManimie

    View full-size slide

  39. Devices / per week
    Sessions per device / per week

    View full-size slide

  40. $
    Olivier Collet
    @ocollet

    View full-size slide