Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SaaS- SDK as a service

Marina
February 24, 2016

SaaS- SDK as a service

Discussing the challenges of building an iOS SDK for a SaaS product.

Marina

February 24, 2016
Tweet

More Decks by Marina

Other Decks in Programming

Transcript

  1. SaaS
    SDK as a Service

    View Slide

  2. vs

    View Slide

  3. Things to share:
    • Who is the customer and how that affected our
    choices
    • Compatibility
    • The environment

    View Slide

  4. Are you my customer?

    View Slide

  5. Are you my customer?

    View Slide

  6. Which platforms and versions to support?
    Which technologies to use?

    View Slide

  7. iOS Version Statistics
    …of user devices

    View Slide

  8. iOS Version Statistics
    …of apps in App Store
    Min. iOS 9.0
    Min. iOS 8.0
    Min. iOS 7.0
    Min. iOS 6.0

    View Slide

  9. View Slide

  10. View Slide

  11. – 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.”

    View Slide

  12. iOS 8.0 + iOS 7.0 +
    Objective-C
    Swift Open source
    only
    Open source
    only, copy code

    View Slide

  13. Compatibility

    View Slide

  14. 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…

    View Slide

  15. 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…

    View Slide

  16. Backwards Compatibility
    • Can’t afford breaking changes on backend
    • Public API - breaking changes only if needed

    View Slide

  17. Mind your surroundings
    • Device
    • Arbitrary project and its configuration
    • Arbitrary UI hierarchy

    View Slide

  18. • No Swift - No Modules. Prefix classes, to avoid
    duplicate symbols
    • -ObjC is evil (-force_load is good)
    • NSLog…

    View Slide

  19. 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;

    View Slide

  20. Keyboard
    Web iOS 9
    iOS 8

    View Slide

  21. Status Bar
    • Separate window takes over status bar.
    • UIViewControllerBasedStatusBarAppearance
    does not make it easier.
    + (void)setPreferredMainStatusBarStyle:(UIStatusBarStyle)statusBarStyle;
    + (void)setShouldPreferStatusBarHidden:(BOOL)hidden;

    View Slide

  22. Rotation
    • No control over rotation
    • If an orientation is not supported by the app, it
    will never go there.
    • Have to support all

    View Slide

  23. View Slide

  24. Localization
    • What if app not localized?
    • Bundle language

    View Slide

  25. Things we learned
    • Remember your customer
    • Look into future, but remember the past
    • Always mind the surroundings

    View Slide

  26. Thanks!
    https://live.gotoassist.com
    Marina Gornostaeva

    @hybridcattt

    View Slide