Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SaaS- SDK as a service
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Marina Vatmakhter
February 24, 2016
Programming
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SaaS- SDK as a service
Discussing the challenges of building an iOS SDK for a SaaS product.
Marina Vatmakhter
February 24, 2016
More Decks by Marina Vatmakhter
See All by Marina Vatmakhter
Bug-Free by Design: Crafting Swift Code That Doesn't Sting
hybridcattt
0
170
Demystifying SwiftUI Previews
hybridcattt
0
270
Detail-oriented UI with Layout Margins @NSSpain 2019
hybridcattt
2
630
Collection Views: Diffable Data Sources and Compositional Layout | Workshop @SwiftIsland 2019
hybridcattt
0
310
Detail-oriented UI with Layout Margins
hybridcattt
1
440
Flow Coordinators IRL
hybridcattt
0
230
Other Decks in Programming
See All in Programming
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
220
Modernizing iOS Apps
seyfoyun
0
150
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
290
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
210
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
630
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
740
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
310
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
5
3.8k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.6k
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
A designer walks into a library…
pauljervisheath
211
25k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Deep Space Network (abreviated)
tonyrice
0
410
Product Roadmaps are Hard
iamctodd
55
13k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
560
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Code Review Best Practice
trishagee
74
20k
Transcript
SaaS SDK as a Service
vs
Things to share: • Who is the customer and how
that affected our choices • Compatibility • The environment
Are you my customer?
Are you my customer?
Which platforms and versions to support? Which technologies to use?
iOS Version Statistics …of user devices
iOS Version Statistics …of apps in App Store Min. iOS
9.0 Min. iOS 8.0 Min. iOS 7.0 Min. iOS 6.0
None
None
– Swift.org https://developer.apple.com/swift/blog/?id=2 “It would be dangerous to rely upon
binary frameworks that use Swift — especially from third parties.”
iOS 8.0 + iOS 7.0 + Objective-C Swift Open source
only Open source only, copy code
Compatibility
New Version of App User Updates the App New Version
of App User Updates the App New Version of SDK auto-updates auto-updates may never happen…
Forward Compatibility • v1.0 might be out there forever •
What would happen when it stops working? • There will be new features, or versions of features…
Backwards Compatibility • Can’t afford breaking changes on backend •
Public API - breaking changes only if needed
Mind your surroundings • Device • Arbitrary project and its
configuration • Arbitrary UI hierarchy
• No Swift - No Modules. Prefix classes, to avoid
duplicate symbols • -ObjC is evil (-force_load is good) • NSLog…
Windows • A window on top of everything • Window
level is important. UIWindowLevelNormal = 0; UIWindowLevelStatusBar = 1000.0; UIWindowLevelAlert = 2000.0; UIWindowLevel CSKConciergeWindowLevel = 500; UIWindowLevel CSKConciergeAnnotationsWindowLevel = 10000000;
Keyboard Web iOS 9 iOS 8
Status Bar • Separate window takes over status bar. •
UIViewControllerBasedStatusBarAppearance does not make it easier. + (void)setPreferredMainStatusBarStyle:(UIStatusBarStyle)statusBarStyle; + (void)setShouldPreferStatusBarHidden:(BOOL)hidden;
Rotation • No control over rotation • If an orientation
is not supported by the app, it will never go there. • Have to support all
None
Localization • What if app not localized? • Bundle language
Things we learned • Remember your customer • Look into
future, but remember the past • Always mind the surroundings
Thanks! https://live.gotoassist.com Marina Gornostaeva @hybridcattt