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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Marina Vatmakhter
February 24, 2016
Programming
210
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
160
Demystifying SwiftUI Previews
hybridcattt
0
250
Detail-oriented UI with Layout Margins @NSSpain 2019
hybridcattt
2
620
Collection Views: Diffable Data Sources and Compositional Layout | Workshop @SwiftIsland 2019
hybridcattt
0
300
Detail-oriented UI with Layout Margins
hybridcattt
1
400
Flow Coordinators IRL
hybridcattt
0
210
Other Decks in Programming
See All in Programming
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
210
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
590
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
120
Contextとはなにか
chiroruxx
1
350
Webフレームワークの ベンチマークについて
yusukebe
0
170
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
250
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
150
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
160
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
120
さぁV100、メモリをお食べ・・・
nilpe
0
150
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Unsuck your backbone
ammeep
672
58k
Ethics towards AI in product and experience design
skipperchong
2
310
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
YesSQL, Process and Tooling at Scale
rocio
174
15k
Documentation Writing (for coders)
carmenintech
77
5.4k
Claude Code のすすめ
schroneko
67
230k
Embracing the Ebb and Flow
colly
88
5.1k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Raft: Consensus for Rubyists
vanstee
141
7.5k
The untapped power of vector embeddings
frankvandijk
2
1.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
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