SlideShare a Scribd company logo
Building Your App SDK w/ Swift:
A Soup to Nuts Guide
Jordan Yaker
@jordanyaker
Supportify.io
State Of The Product (Spring 2015)
•Mature Product
•Few Client Libraries
•Not Many Customers
Coming Up With A Plan
Libraries Created
•.NET Nuget Package
•Ruby Gem
•PHP Composer Package
•WordPress Plugin
Time For iOS
•Learn Objective-C
•tryobjectivec.codeschool.com
•raywenderlich.com/category/ios
•Build Base SDK
•???
Get Some Swagger
API Specification Frameworks
•RAML
•raml.org
•API Blue-Print
•apiblueprint.org
•Swagger
•swagger.io
•Protocol Buffers
•developers.google.com/protocol-buffers
Swagger Project
•Swagger Specification
•github.com/OAI/OpenAPI-Specification
•Swagger Editor
•editor.swagger.io
•Swagger Codegen
•github.com/swagger-api/swagger-codegen
Problems With That Swagger
•Beware Of Authentication
•Early Adopter Woes
Supportify Got Swagger (Fall 2015)
•.NET Nuget Package
•Ruby Gem
•PHP Composer Package
•Python Package
•Java/Android Maven Package
•Objective-C CocoaPod
supportify-ios (1.0.0.beta)
•Objective-C
•AFNetworking
•Erased From History
•That’s a good thing.
•“Sick code, bro. No
really I think it’s
contagious. I feel
sick just from looking
at it.”
Swift: A Modern Language
That’s Not Objective-C Code
Time For iOS (Again)
•Learn Objective-C
•Build Base SDK
•Learn Swift
•Code School: Swift Live Part 1 / Part 2
•raywenderlich.com/category/swift
•github.com/raywenderlich/swift-style-guide
•developer.apple.com/swift
•Build Base SDK
supportify-ios (1.0.0)
•Swift
•AlamoFire
•supportify-ios/
releases/tag/1.0.0
Image Credit: theoatmeal.com
Why Was The SDK Still Terrible?
“You’re telling me that this is going to save me
time, but I have to jump through all of these
hoops to implement it? I’ve already got
enough to do on a regular basis. F*ck that.
Give me an easy to implement solution that
gives me no aggravation, man.”
- Nate Bomberger
iOS Design Patterns
iOS Has Lots Of Design Patterns
Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
iOS Has Lots Of Design Patterns
Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
iOS Has Lots Of Design Patterns
Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
iOS Has Lots Of Design Patterns
Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
Here Comes A New Challenger:
Clean Swift
The Clean Swift Design Pattern
Source: clean-swift.com/clean-swift-ios-architecture
•Configurators Wire
Everything Together
•Controllers Talk To
The Router
•Everything Else Talks
To The “Next” Thing
The Benefits
•Reduced Interdependencies
•Component Isolation
•Fine-Grained Exposure
•Easier Inheritance
•Easier Implementation
Oh Look, More Problems
I Got 99 Problems & Swagger Is One
•No Passing Of Server Errors
•No Parsing Of Server-Returned Error Objects
•AlamoFire Demands Data With 200 Status
•The API Wasn’t Using 204 Status Codes
The API Needed Some Tweaks
•Tag And Category Filtering
•CSV (“Tag 1, Tag 2, Tag 3”)
•Rudimentary DSL (“Tag 1 AND (Tag 2 OR Tag 3)”)
•The “Order” Parameter
•…And The Tests Just Weren’t As Good We
Thought
The Final Product
supportify-ios (3.1.2)
•Swagger-Based Proxy
•API Client
•Resource Models
•Global Configurator
•Authentication
•Global Filters
•Scene Components
•Category List
•Entry List
•Entry
•Search List
But Wait – We’re
Still Not Done
What Makes For Good Docs?
•Copy And Paste
•Simple To Complex
•Good Structure
Questions?

More Related Content

PPTX
Building Your App SDK with Swift
PDF
Becoming a Git Master - Nicola Paolucci
PPTX
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
PPTX
Ios driver presentation copy
PDF
A Secure DevOps Journey
PDF
A Business Case for Git - Tim Pettersen
PDF
Security as Code: A DevSecOps Approach
PPTX
How to Get Started with Cypress
Building Your App SDK with Swift
Becoming a Git Master - Nicola Paolucci
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
Ios driver presentation copy
A Secure DevOps Journey
A Business Case for Git - Tim Pettersen
Security as Code: A DevSecOps Approach
How to Get Started with Cypress

What's hot (20)

PDF
Hacker Games & DevSecOps
PDF
Static Analysis For Security and DevOps Happiness w/ Justin Collins
PDF
Test Driven Development - Workshop
PDF
Getting Predictable - Pragmatic Approach for Mobile Development - Devday.lk ...
PPTX
How To Think Like A Programmer
PDF
Creative Branching Models for Multiple Release Streams
PPTX
How does Java 8 exert hidden power on Test Automation?
PDF
Your Framework for Success: introduction to JavaScript Testing at Scale
PPTX
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
PDF
Ast in CI/CD by Ofer Maor
PDF
DevSecOps - Building Rugged Software
PDF
Monitoring your API
PDF
Innovation dank DevOps (DevOpsCon Berlin 2015)
PDF
London Atlassian User Group - February 2014
PDF
TDD and the Terminator: An Introduction to Test-Driven Development
PDF
Henrique Dantas - API fuzzing using Swagger
PPT
Ruby On Rails Presentation
PPTX
DevSecCon Tel Aviv 2018 - Security Testing for Containerised Apps by Omer Levi
PDF
QAAgility Presentation - Cucumber with Appium
Hacker Games & DevSecOps
Static Analysis For Security and DevOps Happiness w/ Justin Collins
Test Driven Development - Workshop
Getting Predictable - Pragmatic Approach for Mobile Development - Devday.lk ...
How To Think Like A Programmer
Creative Branching Models for Multiple Release Streams
How does Java 8 exert hidden power on Test Automation?
Your Framework for Success: introduction to JavaScript Testing at Scale
DevSecCon Tel Aviv 2018 - Security learns to sprint by Tanya Janca
Ast in CI/CD by Ofer Maor
DevSecOps - Building Rugged Software
Monitoring your API
Innovation dank DevOps (DevOpsCon Berlin 2015)
London Atlassian User Group - February 2014
TDD and the Terminator: An Introduction to Test-Driven Development
Henrique Dantas - API fuzzing using Swagger
Ruby On Rails Presentation
DevSecCon Tel Aviv 2018 - Security Testing for Containerised Apps by Omer Levi
QAAgility Presentation - Cucumber with Appium
Ad

Viewers also liked (13)

PPTX
The big-splash Presentation
PDF
PPTX
Turki Utsmani
PPTX
Infografia
PPTX
Insomia and homeopathy treatment
PPTX
The city planners presentation by margaret atwood 2
PPTX
The Handmade Tales by Margaret Atwood
PPSX
Welfunding Financial Freedom way...
PPTX
Epilepsia
PPTX
PPTX
Examination in palpitation
PDF
Técnicas en imagenología cerebral
PPTX
Hemorragia posparto y retención placentaria
The big-splash Presentation
Turki Utsmani
Infografia
Insomia and homeopathy treatment
The city planners presentation by margaret atwood 2
The Handmade Tales by Margaret Atwood
Welfunding Financial Freedom way...
Epilepsia
Examination in palpitation
Técnicas en imagenología cerebral
Hemorragia posparto y retención placentaria
Ad

Similar to Philly CocoaHeads 20160414 - Building Your App SDK With Swift (20)

PPTX
Continuous integration by Rémy Virin
PPTX
Building a REST API Microservice for the DevNet API Scavenger Hunt
PPTX
DevOps and AWS - Code PaLOUsa 2017
PDF
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
PDF
Application Deployment at UC Riverside
KEY
Phonegap for Engineers
PDF
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
PDF
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
PPTX
CubeJS: eBay’s Node.js Adoption Journey
PDF
Xamarin v.Now
PPTX
Appcelerator Titanium Intro
PPTX
Clean Code Part III - Craftsmanship at SoCal Code Camp
PDF
Building Papers
PPTX
Angular2.0@Shanghai0319
PPTX
Kiss.ts - The Keep It Simple Software Stack for 2017++
PDF
Mobile Vue.js – From PWA to Native
PDF
iOS Development Survival Guide for the .NET Guy
PPTX
React native - React(ive) Way To Build Native Mobile Apps
KEY
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
KEY
oscon2011fb
Continuous integration by Rémy Virin
Building a REST API Microservice for the DevNet API Scavenger Hunt
DevOps and AWS - Code PaLOUsa 2017
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Application Deployment at UC Riverside
Phonegap for Engineers
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
CubeJS: eBay’s Node.js Adoption Journey
Xamarin v.Now
Appcelerator Titanium Intro
Clean Code Part III - Craftsmanship at SoCal Code Camp
Building Papers
Angular2.0@Shanghai0319
Kiss.ts - The Keep It Simple Software Stack for 2017++
Mobile Vue.js – From PWA to Native
iOS Development Survival Guide for the .NET Guy
React native - React(ive) Way To Build Native Mobile Apps
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
oscon2011fb

Recently uploaded (20)

DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
cuic standard and advanced reporting.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Encapsulation theory and applications.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
KodekX | Application Modernization Development
The AUB Centre for AI in Media Proposal.docx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Understanding_Digital_Forensics_Presentation.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Per capita expenditure prediction using model stacking based on satellite ima...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
cuic standard and advanced reporting.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Encapsulation theory and applications.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Building Integrated photovoltaic BIPV_UPV.pdf
Unlocking AI with Model Context Protocol (MCP)
Digital-Transformation-Roadmap-for-Companies.pptx
MYSQL Presentation for SQL database connectivity
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Network Security Unit 5.pdf for BCA BBA.
Spectral efficient network and resource selection model in 5G networks
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KodekX | Application Modernization Development

Philly CocoaHeads 20160414 - Building Your App SDK With Swift

Editor's Notes

  • #3: I started this journey because of my product: Supportify. Supportify is a SaaS product focused on allowing apps to instantly provide users with dynamic help where, when, and how they need it. Whether it’s a help center, tool tips, or knowledge base, you simply implement once and you content remains always up to date.
  • #4: This journey technically started in the Spring of 2015.
  • #5: It was clear that a shift in focus was needed. Conversations with fellow entrepreneurs made it clear that the next step was to beef up the client libraries and reduce the LOE for implementation.
  • #8: I remembered reading a couple of articles about API specification frameworks, so I dug in and did some research on the options.