SlideShare a Scribd company logo
Building Your App SDK w/ Swift:
A Soup to Nuts Guide
Jordan Yaker
@jordanyaker
FIS Global
Who is FIS?
•Global Technology Consulting
•The best and the brightest.
•Emphasis on community.
•And more…
Supportify.io
What is Supportify?
“It’s a help-center as as service that allows you
to provide your users with instantaneous,
always up-to-date help content. Keep your
users happy with less effort using Supportify.”
What is was Supportify?
“It’s a help-center as as service that allows you
to provide your users with instantaneous,
always up-to-date help content. Keep your
users happy with less effort using Supportify.”
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 (Open API Initiative)
•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
•Security
• Be careful what you share with others.
• Exploitation
• “…a malicious Swagger definition document…”
Source: https://community.rapid7.com/community/infosec/blog/2016/06/23/r7-2016-06-
remote-code-execution-via-swagger-parameter-injection-cve-2016-5641
Stop . . . Demo Time
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
•Everything Talks To
The “Next” Thing
•Configurators Wire
Everything Together
•Controllers Talk To
The Router
•Models Transport
Data
The Benefits
•Reduced Interdependencies
•Component Isolation
•Fine-Grained Exposure
•Greater Testability
•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 server unit 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
•Help Center
• Category List
• Entry List
• Entry
• Search List
•About Us Page
•Tooltip
•Onboarding/Wizard
supportify-ios (3.1.X)
•More Components
•About Us / Single Content Pages
•Tooltip / Popups
•Onboarding / Wizards
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
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
PPTX
Embracing OSS in the enterprise
PDF
XRebel - Real Time Insight, Faster Apps
PDF
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
PDF
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
PPTX
Enabing DevOps in an SDN World
KEY
Building Pistachio with Sencha Touch 2 (introductory)
PDF
Jenkins vs Bamboo | Differences Between Jenkins and Bamboo | Edureka
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
Embracing OSS in the enterprise
XRebel - Real Time Insight, Faster Apps
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Enabing DevOps in an SDN World
Building Pistachio with Sencha Touch 2 (introductory)
Jenkins vs Bamboo | Differences Between Jenkins and Bamboo | Edureka

What's hot (20)

PDF
The Secret to Improving DevSecOps Credential Security without Sacrificing Pro...
PPTX
DevSecOps Introduction Tushar Joshi - Owasp Nagpur Meetup 12 May 2019
PPTX
DevNet UX Creative Design 101 workshop
PDF
Spring IO for startups
PDF
Ast in CI/CD by Ofer Maor
PPTX
How To Think Like A Programmer
PPTX
Programming Motherfucker
PDF
DevSecOps - The big picture
PDF
Security as Code: A DevSecOps Approach
ODP
Jenkins CI in Action
PPTX
14 Habits of Great SQL Developers
PPTX
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
PPTX
Greenfield Java 2013
PDF
A Secure DevOps Journey
PDF
Achieving Continuous Delivery with Puppet
PDF
Long-term Impact of Log4J
PPTX
Java CMS 2015
PPTX
SQL Pass Architecture SQL Tips & Tricks
PDF
Spring Framework 5.0 on JDK 8 & 9
PDF
Phil Webb at SpringOne Platform 2017
The Secret to Improving DevSecOps Credential Security without Sacrificing Pro...
DevSecOps Introduction Tushar Joshi - Owasp Nagpur Meetup 12 May 2019
DevNet UX Creative Design 101 workshop
Spring IO for startups
Ast in CI/CD by Ofer Maor
How To Think Like A Programmer
Programming Motherfucker
DevSecOps - The big picture
Security as Code: A DevSecOps Approach
Jenkins CI in Action
14 Habits of Great SQL Developers
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
Greenfield Java 2013
A Secure DevOps Journey
Achieving Continuous Delivery with Puppet
Long-term Impact of Log4J
Java CMS 2015
SQL Pass Architecture SQL Tips & Tricks
Spring Framework 5.0 on JDK 8 & 9
Phil Webb at SpringOne Platform 2017
Ad

Viewers also liked (13)

PPTX
Watch f1 canada gp
PPT
Prelegerea 7
PPTX
riesgos laborales
PDF
Business Admin Diploma certificate
PPTX
Watch f1 canada gp montreal
PPT
Presentation to BAA
PPTX
Crisis convulsivas
PPTX
Presentación problematica
PPT
Sistema cientifico tecnologico
PPTX
Psicologia evolutiva
PPTX
Palpitation
PPT
Palpitations
Watch f1 canada gp
Prelegerea 7
riesgos laborales
Business Admin Diploma certificate
Watch f1 canada gp montreal
Presentation to BAA
Crisis convulsivas
Presentación problematica
Sistema cientifico tecnologico
Psicologia evolutiva
Palpitation
Palpitations
Ad

Similar to Building Your App SDK with Swift (20)

PPTX
Swift Learning
PPTX
Training on iOS app development - Samesh Swongamikha & Neetin Sharma
KEY
iPhone OS: The Next Killer Platform
PDF
Architecting iOS Project
PDF
Mobile development - MELI apps
PDF
What Are Popular Tools For iOS App Development in 2024?
PDF
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
PDF
iPhone App Dev Overview - Mobile Dev Camp Vietnam 1
KEY
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
PPTX
Basic iOS Training with SWIFT - Part 1
PDF
Cross-platform : Picking the best option for your next iOS/Android app
PDF
I Love APIs - Oct 2015
PDF
iOS Indie Developer Toolkit - CocoaHeads 3city
PDF
iOS Development Survival Guide for the .NET Guy
PDF
Learning the iOS 4 SDK for JavaScript Programmers Create Native Apps with Obj...
PDF
10 reasons why swift is best for i os app development
PDF
CV_Serhiy_Medvedyev_2015
PPTX
PDF
Reasons to Choose Swift for iOS App Development.pdf
PDF
Walk The Talk
Swift Learning
Training on iOS app development - Samesh Swongamikha & Neetin Sharma
iPhone OS: The Next Killer Platform
Architecting iOS Project
Mobile development - MELI apps
What Are Popular Tools For iOS App Development in 2024?
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
iPhone App Dev Overview - Mobile Dev Camp Vietnam 1
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
Basic iOS Training with SWIFT - Part 1
Cross-platform : Picking the best option for your next iOS/Android app
I Love APIs - Oct 2015
iOS Indie Developer Toolkit - CocoaHeads 3city
iOS Development Survival Guide for the .NET Guy
Learning the iOS 4 SDK for JavaScript Programmers Create Native Apps with Obj...
10 reasons why swift is best for i os app development
CV_Serhiy_Medvedyev_2015
Reasons to Choose Swift for iOS App Development.pdf
Walk The Talk

Recently uploaded (20)

PPTX
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PDF
PPT on Performance Review to get promotions
PDF
Structs to JSON How Go Powers REST APIs.pdf
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
CH1 Production IntroductoryConcepts.pptx
PPTX
Construction Project Organization Group 2.pptx
PPTX
Sustainable Sites - Green Building Construction
PDF
Digital Logic Computer Design lecture notes
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
DOCX
573137875-Attendance-Management-System-original
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PPT on Performance Review to get promotions
Structs to JSON How Go Powers REST APIs.pdf
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Embodied AI: Ushering in the Next Era of Intelligent Systems
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
Internet of Things (IOT) - A guide to understanding
CH1 Production IntroductoryConcepts.pptx
Construction Project Organization Group 2.pptx
Sustainable Sites - Green Building Construction
Digital Logic Computer Design lecture notes
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
bas. eng. economics group 4 presentation 1.pptx
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
573137875-Attendance-Management-System-original
Operating System & Kernel Study Guide-1 - converted.pdf
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Strings in CPP - Strings in C++ are sequences of characters used to store and...

Building Your App SDK with Swift

  • 1. Building Your App SDK w/ Swift: A Soup to Nuts Guide Jordan Yaker @jordanyaker
  • 3. Who is FIS? •Global Technology Consulting •The best and the brightest. •Emphasis on community. •And more…
  • 5. What is Supportify? “It’s a help-center as as service that allows you to provide your users with instantaneous, always up-to-date help content. Keep your users happy with less effort using Supportify.”
  • 6. What is was Supportify? “It’s a help-center as as service that allows you to provide your users with instantaneous, always up-to-date help content. Keep your users happy with less effort using Supportify.”
  • 7. State Of The Product (Spring 2015) •Mature Product •Few Client Libraries •Not Many Customers
  • 8. Coming Up With A Plan
  • 9. Libraries Created •.NET Nuget Package •Ruby Gem •PHP Composer Package •WordPress Plugin
  • 10. Time For iOS •Learn Objective-C •tryobjectivec.codeschool.com •raywenderlich.com/category/ios •Build Base SDK •???
  • 12. API Specification Frameworks •RAML •raml.org •API Blue-Print •apiblueprint.org •Swagger •swagger.io •Protocol Buffers •developers.google.com/protocol-buffers
  • 13. Swagger Project •Swagger Specification (Open API Initiative) •github.com/OAI/OpenAPI-Specification •Swagger Editor •editor.swagger.io •Swagger Codegen •github.com/swagger-api/swagger-codegen
  • 14. Problems With That Swagger •Beware Of Authentication •Early Adopter Woes •Security • Be careful what you share with others. • Exploitation • “…a malicious Swagger definition document…” Source: https://community.rapid7.com/community/infosec/blog/2016/06/23/r7-2016-06- remote-code-execution-via-swagger-parameter-injection-cve-2016-5641
  • 15. Stop . . . Demo Time
  • 16. Supportify Got Swagger (Fall 2015) •.NET Nuget Package •Ruby Gem •PHP Composer Package •Python Package •Java/Android Maven Package •Objective-C CocoaPod
  • 17. 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.”
  • 18. Swift: A Modern Language That’s Not Objective-C Code
  • 19. 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
  • 21. 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
  • 23. iOS Has Lots Of Design Patterns Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
  • 24. iOS Has Lots Of Design Patterns Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
  • 25. iOS Has Lots Of Design Patterns Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
  • 26. iOS Has Lots Of Design Patterns Source: medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
  • 27. Here Comes A New Challenger: Clean Swift
  • 28. The Clean Swift Design Pattern Source: clean-swift.com/clean-swift-ios-architecture •Everything Talks To The “Next” Thing •Configurators Wire Everything Together •Controllers Talk To The Router •Models Transport Data
  • 29. The Benefits •Reduced Interdependencies •Component Isolation •Fine-Grained Exposure •Greater Testability •Easier Inheritance •Easier Implementation
  • 30. Oh Look, More Problems
  • 31. 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
  • 32. 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 server unit tests just weren’t as good we thought.
  • 34. supportify-ios (3.1.2) •Swagger-Based Proxy •API Client •Resource Models •Global Configurator •Authentication •Global Filters •Scene Components •Help Center • Category List • Entry List • Entry • Search List •About Us Page •Tooltip •Onboarding/Wizard
  • 35. supportify-ios (3.1.X) •More Components •About Us / Single Content Pages •Tooltip / Popups •Onboarding / Wizards
  • 36. But Wait – We’re Still Not Done
  • 37. What Makes For Good Docs? •Copy And Paste •Simple To Complex •Good Structure

Editor's Notes

  • #4: This journey technically started in the Spring of 2015.
  • #5: 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.
  • #6: This journey technically started in the Spring of 2015.
  • #7: This journey technically started in the Spring of 2015.
  • #8: This journey technically started in the Spring of 2015.
  • #9: 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.
  • #12: I remembered reading a couple of articles about API specification frameworks, so I dug in and did some research on the options.
  • #16: I remembered reading a couple of articles about API specification frameworks, so I dug in and did some research on the options.