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

  2. Ryan Loughlin

  3. Unsplash • Beautiful photos you can download for free and

    use for anything. • Gifted by the most generous community of photographers.
  4. The process Patrick Schneider

  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.
  6. Valdemaras D.

  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?
  8. Jakob Owens

  9. iOS app First attempt • Browse photos • Browse collections

    • Search • A dedicated wallpaper section • Drag & drop
  10. George Desipris

  11. iOS app October 2017

  12. BORING! " Charles Deluvio

  13. iOS app Simplified • Cut cut cut • Keep the

    basics: • New photos • Featured collections • Search
  14. Mert Atakan

  15. iOS app March 2018

  16. iOS app March 2018

  17. Samuele Errico Piccarini

  18. Launch April 5, 2018 • No profiles • No authentication

    • No ability to like or collect photos • No photo upload
  19. Fabian Struwe

  20. The team • Mikael - Big picture + vision •

    Luke - Big picture + roadmap • Kirill & Charles - Design • Olivier - Development
  21. Ian Keefe

  22. Planning updates • 6-week cycles • Release an update every

    cycle • Photographers profiles (released) • Photo submission (upcoming)
  23. Some tech stuff Carlos Irineu da Costa

  24. On-demand resources • Images for the on-boarding flow • Downloaded

    when downloading the app • Discarded once the on-boarding is completed
  25. Nathan Dumlao

  26. Storyboards • Best code is no code • A storyboard

    per main flow • Wrote a script to use identifiers as constants in the code
  27. Donald Giannatti

  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)
  29. Chris Fuller

  30. Networking • No shared API client • Each request is

    independent • Requests are subclasses of Operation
  31. David Emrich

  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
  33. Ryan Stone

  34. Custom transitions • Tons of work! • Currently spaghetti code,

    needs to be refactored • TONS of work!
  35. Mark Cataldo

  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 #
  37. Pythagorean theorem #

  38. Nathan Peterson

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

  40. Stats Chris Liverani

  41. None
  42. Ting Tian

  43. Downloads / Source

  44. Ryan McManimie

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

  46. $ Olivier Collet @ocollet