Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SaaS- SDK as a service
Search
Marina Vatmakhter
February 24, 2016
Programming
0
150
SaaS- SDK as a service
Discussing the challenges of building an iOS SDK for a SaaS product.
Marina Vatmakhter
February 24, 2016
Tweet
Share
More Decks by Marina Vatmakhter
See All by Marina Vatmakhter
Bug-Free by Design: Crafting Swift Code That Doesn't Sting
hybridcattt
0
140
Demystifying SwiftUI Previews
hybridcattt
0
200
Detail-oriented UI with Layout Margins @NSSpain 2019
hybridcattt
2
540
Collection Views: Diffable Data Sources and Compositional Layout | Workshop @SwiftIsland 2019
hybridcattt
0
260
Detail-oriented UI with Layout Margins
hybridcattt
1
330
Flow Coordinators IRL
hybridcattt
0
160
Other Decks in Programming
See All in Programming
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
150
State of CSS 2025
benjaminkott
1
120
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.1k
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
270
Flutterと Vibe Coding で個人開発!
hyshu
1
270
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
ワープロって実は計算機で
pepepper
2
1.4k
フロントエンドのmonorepo化と責務分離のリアーキテクト
kajitack
2
140
実践!App Intents対応
yuukiw00w
1
350
兎に角、コードレビュー
mitohato14
0
150
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
How to Ace a Technical Interview
jacobian
279
23k
Producing Creativity
orderedlist
PRO
347
40k
Optimizing for Happiness
mojombo
379
70k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
780
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Side Projects
sachag
455
43k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Building Applications with DynamoDB
mza
96
6.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
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