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 Slide

  2. Ryan Loughlin

    View Slide

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

    View Slide

  4. The process
    Patrick Schneider

    View 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 Slide

  6. Valdemaras D.

    View 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 Slide

  8. Jakob Owens

    View Slide

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

    View Slide

  10. George Desipris

    View Slide

  11. iOS app October 2017

    View Slide

  12. BORING! "
    Charles Deluvio

    View Slide

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

    View Slide

  14. Mert Atakan

    View Slide

  15. iOS app March 2018

    View Slide

  16. iOS app March 2018

    View Slide

  17. Samuele Errico Piccarini

    View Slide

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

    View Slide

  19. Fabian Struwe

    View Slide

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

    View Slide

  21. Ian Keefe

    View Slide

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

    View Slide

  23. Some tech stuff
    Carlos Irineu da Costa

    View Slide

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

    View Slide

  25. Nathan Dumlao

    View Slide

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

    View Slide

  27. Donald Giannatti

    View Slide

  28. 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 Slide

  29. Chris Fuller

    View Slide

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

    View Slide

  31. David Emrich

    View Slide

  32. 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 Slide

  33. Ryan Stone

    View Slide

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

    View Slide

  35. Mark Cataldo

    View Slide

  36. 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 Slide

  37. Pythagorean theorem #

    View Slide

  38. Nathan Peterson

    View Slide

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

    View Slide

  40. Stats
    Chris Liverani

    View Slide

  41. View Slide

  42. Ting Tian

    View Slide

  43. Downloads / Source

    View Slide

  44. Ryan McManimie

    View Slide

  45. Devices / per week
    Sessions per device / per week

    View Slide

  46. $
    Olivier Collet
    @ocollet

    View Slide