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. 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 #