Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mobile SDK: Considerations & Best Practices

7,475 views

Published on

Mobile SDKs are a great way to make your service or API easily consumable by the large number of developers out there looking for state of the art tools to make their apps stand out in the competitive marketplaces, but building a stable, compatible and successful SDK is quite a challenge.

In this talk we the technical and design challenges involved in developing an efficient mobile SDK that is highly compatible with its host mobile app, and the various considerations we took into account and the lessons we’ve learned while designing and building LivePerson’s native mobile SDK.

Published in: Technology

Mobile SDK: Considerations & Best Practices

  1. 1. Yaron Karasik Mobile SDKs: Considerations and Best Practices Yaron Karasik
  2. 2. Yaron Karasik New York Greenwell Hi, I’m Yaron Karasik
  3. 3. What is a mobile SDK?
  4. 4. Why build a native Mobile SDK?
  5. 5. Offer a mobile specific service Make existing service or API easily usable
  6. 6. App developers are a well defined target market and business model
  7. 7. What do we need to consider when building a SDK?
  8. 8. How much time do you have to hook the developer?
  9. 9. What’s the easiest way for a developer to solve an SDK related issue?
  10. 10. Your SDK is a guest in its host app Creative Commons Image: Liz Mc https://www.flickr.com/photos/11638547@N00/3827808607
  11. 11. Minimum use of resources Easy to integrate and use Maximum compatibility Provide your own UI?
  12. 12. Users know what the app is doing
  13. 13. Users know what the app is doing
  14. 14. Yaron Karasik Don’t kill the battery
  15. 15. Yaron Karasik Be thrifty with cellular data
  16. 16. Not real time? Batch requests
  17. 17. Real time? Use mobile optimized transport and API
  18. 18. Polling Long Polling SSE Websockets
  19. 19. Keep your payloads as small as possible
  20. 20. Memory - Allocations & Leaks
  21. 21. Performance
  22. 22. Instruments
  23. 23. Automated Build Process and Testing Don’t crash the host app
  24. 24. Never ask the user for permissions..
  25. 25. ..but definitely use them if permission has been given Class $CLLocationManager = NSClassFromString(@"CLLocationManager"); if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied) {! ..! }!
  26. 26. Location Services Twitter Facebook Address Book Photos Camera Notifications Microphone Calendars Bluetooth
  27. 27. Again, users know what the app is doing..
  28. 28. Notifications Push requires server side support and developer trust
  29. 29. Notifications Local is very useful if already enabled by developer
  30. 30. App Size
  31. 31. 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
  32. 32. Should I use open source code in an SDK?
  33. 33. OS Version Compatibility
  34. 34. Architecture Compatibility
  35. 35. When will the developer upgrade the SDK?
  36. 36. Much later than you’d like So design your APIs for the long run
  37. 37. Make it easy to integrate and use
  38. 38. Instant onboarding Free tier (or trial)
  39. 39. Interactive docs are cool
  40. 40. Indicate successful integration
  41. 41. Use CocoaPods.. platform :ios, '7.0'! ! pod 'AFNetworking', '~> 2.1'! pod 'Reachability'! pod 'LivePerson', '~> 1.5.448'! pod 'SocketRocket', '= 0.3.1-beta2'
  42. 42. ..or a minimum integration flow 1. Add required frameworks 2. Add SDK
  43. 43. Simple SDK Launch [[SDKManager shared] initWithAppId:@“XYZ-ABC”];
  44. 44. 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
  45. 45. Smart callbacks and event reporting Notifications BlocksDelegates
  46. 46. Configuration - Server or Client side?
  47. 47. Help the developer keep the SDK updated Cocoapods + Github
  48. 48. Should your SDK include UI?
  49. 49. Provide UI friendly API, allow developer to use their own UI Plan A
  50. 50. Provide a view controller for the developer to present Plan B
  51. 51. Implement your own UI, automatically integrate with host Plan C
  52. 52. Maintain App Context
  53. 53. Custom Branding
  54. 54. Device and orientation support
  55. 55. OS Version Compatibility
  56. 56. What about assets? • Use flat design when you can • PNG crush required assets • Consider downloading and caching • Download bundle on first launch
  57. 57. Memory Networking Documentation UI Devices OS Versions Battery Permissions Security Storage App Size Performance Summary
  58. 58. Thank You! We are hiring
  59. 59. YouTube.com/LivePersonDev3 Twi5er.com/LivePersonDev3 Facebook.com/LivePersonDev3 Slideshare.net/LivePersonDev3

×