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.

Avatar for Olivier Collet

Olivier Collet

September 20, 2018
Tweet

More Decks by Olivier Collet

Other Decks in Programming

Transcript

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

    use for anything. • Gifted by the most generous community of photographers.
  2. 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.
  3. 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?
  4. iOS app First attempt • Browse photos • Browse collections

    • Search • A dedicated wallpaper section • Drag & drop
  5. iOS app Simplified • Cut cut cut • Keep the

    basics: • New photos • Featured collections • Search
  6. Launch April 5, 2018 • No profiles • No authentication

    • No ability to like or collect photos • No photo upload
  7. The team • Mikael - Big picture + vision •

    Luke - Big picture + roadmap • Kirill & Charles - Design • Olivier - Development
  8. Planning updates • 6-week cycles • Release an update every

    cycle • Photographers profiles (released) • Photo submission (upcoming)
  9. On-demand resources • Images for the on-boarding flow • Downloaded

    when downloading the app • Discarded once the on-boarding is completed
  10. Storyboards • Best code is no code • A storyboard

    per main flow • Wrote a script to use identifiers as constants in the code
  11. 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)
  12. Networking • No shared API client • Each request is

    independent • Requests are subclasses of Operation
  13. 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
  14. 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 #