SlideShare a Scribd company logo
Mobile SDK: Considerations & Best Practices
Yaron Karasik
Mobile SDKs:
Considerations and
Best Practices
Yaron Karasik
Yaron Karasik New York
Greenwell
Hi, I’m Yaron
Karasik
Mobile SDK: Considerations & Best Practices
What is a mobile
SDK?
Why build a native
Mobile SDK?
Offer a mobile
specific service
Make existing service
or API easily usable
Mobile SDK: Considerations & Best Practices
App developers are a
well defined target
market and business
model
What do we need to
consider when
building a SDK?
How much time do
you have to hook
the developer?
Mobile SDK: Considerations & Best Practices
What’s the easiest way
for a developer to solve
an SDK related issue?
Mobile SDK: Considerations & Best Practices
Mobile SDK: Considerations & Best Practices
Your SDK is a guest
in its host app
Creative Commons Image: Liz Mc
https://www.flickr.com/photos/11638547@N00/3827808607
Minimum use
of resources
Easy to integrate
and use
Maximum
compatibility
Provide your
own UI?
Users know
what the app is
doing
Users know
what the app is
doing
Yaron Karasik
Don’t kill the
battery
Yaron Karasik
Be thrifty with
cellular data
Not real time?
Batch requests
Real time? Use mobile
optimized transport and
API
Polling
Long Polling
SSE
Websockets
Keep your payloads
as small as possible
Memory - Allocations & Leaks
Performance
Instruments
Automated Build
Process and Testing
Don’t crash the host
app
Never ask the user
for permissions..
..but definitely use them if
permission has been given
Class $CLLocationManager =
NSClassFromString(@"CLLocationManager");
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied) {!
..!
}!
Location
Services
Twitter
Facebook
Address
Book
Photos
Camera
Notifications
Microphone
Calendars
Bluetooth
Again, users
know what the
app is doing..
Notifications
Push requires
server side support
and developer trust
Notifications
Local is very useful
if already enabled
by developer
App Size
Local Storage & Security
• Don’t use local storage it you don’t have to
• If you do, take good care of app data
• Encrypt sensitive information
• Purge it when you’re done
• Use SSL for all networking
Should I use open
source code in an SDK?
OS Version Compatibility
Mobile SDK: Considerations & Best Practices
Architecture Compatibility
When will the
developer upgrade
the SDK?
Much later than
you’d like
So design your APIs
for the long run
Make it easy to
integrate and use
Instant onboarding
Free tier (or trial)
Interactive docs are cool
Indicate successful integration
Use CocoaPods..

platform :ios, '7.0'!
!
pod 'AFNetworking', '~> 2.1'!
pod 'Reachability'!
pod 'LivePerson', '~> 1.5.448'!
pod 'SocketRocket', '= 0.3.1-beta2'
..or a minimum integration flow
1. Add required frameworks
2. Add SDK
Simple SDK Launch
[[SDKManager shared] initWithAppId:@“XYZ-ABC”];
Developer Logs

EcoTest[2051:66030] [LPMobile//info]
Loaded. #ios #info!
!
EcoTest[2051:66030] [LPMobile//
warning] The server has reported an
error with your app. This may be
caused by a bad configuration - Please
contact mobile@liveperson.com for
assistance. #ios #warning
Smart callbacks
and event reporting
Notifications
BlocksDelegates
Configuration -
Server or Client side?
Help the developer
keep the SDK updated
Cocoapods + Github
Should your SDK
include UI?
Mobile SDK: Considerations & Best Practices
Provide UI friendly
API, allow developer
to use their own UI
Plan A
Provide a view
controller for the
developer to present
Plan B
Implement your own
UI, automatically
integrate with host
Plan C
Maintain App
Context
Custom Branding
Device and orientation
support
OS Version Compatibility
What about assets?
• Use flat design when you can
• PNG crush required assets
• Consider downloading and caching
• Download bundle on first launch
Memory
Networking
Documentation
UI
Devices
OS Versions
Battery
Permissions
Security
Storage
App Size
Performance
Summary
Thank You!
We are hiring
YouTube.com/LivePersonDev3
Twi5er.com/LivePersonDev3
Facebook.com/LivePersonDev3
Slideshare.net/LivePersonDev3

More Related Content

Mobile SDK: Considerations & Best Practices