This presentation covers the various aspects of building Unsplash for iOS.
• Original concept, re-design
• How we work
• Unusual technical bits
Presented at CocoaHeads Montreal on September 20th, 2018.
Building Unsplash for iOS
OLIVIER COLLET. COCOAHEADS MONTREAL. 20.09.2018
• Beautiful photos you can download for free and use for anything.
• Gifted by the most generous community of photographers.
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.
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?
iOS app First attempt
• Browse photos
• Browse collections
• A dedicated wallpaper section
• Drag & drop
iOS app October 2017
iOS app Simplified
• Cut cut cut
• Keep the basics:
• New photos
• Featured collections
iOS app March 2018
iOS app March 2018
Samuele Errico Piccarini
Launch April 5, 2018
• No profiles
• No authentication
• No ability to like or collect photos
• No photo upload
• Mikael - Big picture + vision
• Luke - Big picture + roadmap
• Kirill & Charles - Design
• Olivier - Development
• 6-week cycles
• Release an update every cycle
• Photographers profiles (released)
• Photo submission (upcoming)
Some tech stuff
Carlos Irineu da Costa
• Images for the on-boarding flow
• Downloaded when downloading the app
• Discarded once the on-boarding is completed
• Best code is no code
• A storyboard per main flow
• Wrote a script to use identifiers as constants in the code
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)
• No shared API client
• Each request is independent
• Requests are subclasses of Operation
• No coordinator or flow controller
• PhotosViewController is used a lot
• As a child view controller sometimes
• Remains generic, a datasource controls its content
• Tons of work!
• Currently spaghetti code, needs to be refactored
• TONS of work!
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 #
Pythagorean theorem #
• Testing on-demand resources
• Those crazy custom transitions
Downloads / Source
Devices / per week
Sessions per device / per week