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.

732de78cba7ebf62ccb9cf3ea08d618b?s=128

Olivier Collet

September 20, 2018
Tweet

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