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

Getting Started with iOS Enterprise Development

Avatar for LJ Wilson LJ Wilson
September 26, 2014

Getting Started with iOS Enterprise Development

This is a two part talk, running through iOS development for the Enterprise quickly and then covering transitioning from .NET to iOS development. The sample project is located at:
https://dl.dropboxusercontent.com/u/3660978/Transitions.zip

Avatar for LJ Wilson

LJ Wilson

September 26, 2014

More Decks by LJ Wilson

Other Decks in Programming

Transcript

  1. LJ Wilson [email protected] Programmer Systems Development Group Arkansas Children’s Hospital

    Contact Info: stackoverflow.com/users/585320/eljay @eljaywilson
  2. ACH System Development Group • 17 Developers • 7 QA

    / Implementers • 2 DBA’s • 3 Hardware Support
  3. • $299 / year • Deploy apps yourself • No

    App review process • Provisioning expires yearly • DUNS # required In-House vs App Store • $99 / year • Submits to App Store • App reviewed by Apple • Provisioning expire only if account expires • DUNS # for company only
  4. We must solve a problem • App store apps typically

    provide some utility, extend some service or offer entertainment • In-house apps almost always are written to solve a problem • User base is much different than App Store development • Rewards can be great
  5. The Challenges • Must engineer methods for app deployments and

    updates • Must update every app at least once a year (to include a renewed provisioning profile) • Have to come up with own way of reporting app issues and crash reports • User experience is highly important!
  6. App Deployment Options • Host all apps on a secure

    web-server & send links • Use a third party MDM suite • Pros - Handles multiple platforms (at minimum, iOS and Android) • Cons - Costly and doesn’t lend itself to customization • Create your own “App Store” • Would be platform specific • Highly customizable, and FREE
  7. • Authorizing Devices (lots of questions) • Auto or manual

    authentication? • How long to keep device authenticated? • Integrate with network login credentials? • Create new authentication process? • Touch ID for newer devices! Device Management
  8. • Must have some form of Device ID • Use

    identifierForVendor • When user authenticates for the first time, create relationship between device id and the user id. • Use this relationship for tracking usage and for automatic authentication (if desired) Tracking Devices
  9. • Automatic expiration based on usage? • This could be

    easily controlled on the server side • ACH uses a 30 day window for authentication • Two scenarios that could impact this decision are transferred devices and stolen devices Expiring Devices
  10. • Revolves around one iOS app that is downloaded via

    https • This app uses user authentication to decide which apps the user is allowed to see • One app to rule them all • All installs and most updates come through this app • All feedback regarding apps (problem reports) come through this app • Provide some kind of social aspect (sharing) to the app to assist in adoption Setting up internal “App Store”
  11. Application Info Application ID Application Name Install URL Active Show

    on App Store Show on Web iPhone Screenshots iPad Screenshots APNS Dev Cert APNS Prod Cert OS Platform int varchar varchar bit bit bit int int varchar varchar varchar
  12. Authenticated Devices ID Device ID Network ID Device Type OS

    Platform Banned int varchar varchar varchar varchar bit
  13. Authentications ID Device ID Network ID Last Authenticated Last Application

    App Version int varchar varchar date varchar varchar
  14. APNS Subscriptions ID Device ID Device Token Network ID Application

    ID Added On Active Dev Badge Count int varchar varchar varchar int date bit bit int
  15. APNS Push Notifications ID Device Token Application ID Payload Sound

    File Added On Added By Processed On ! int varchar int varchar varchar date varchar date
  16. Secure the Web-Services • Use distinct API Keys for each

    iOS app • SHA2 256 bit • Secures the app to each web-service. If API Key is missing, don’t return anything or redirect. If the API Key is wrong, let the caller know • Side benefit of forcing users to update to a newer version of the app if needed or to turn off all data to the app (the nuclear option)
  17. Push Notifications • DIY Push Notifications require some planning •

    Apps must have unique App ID for APNS • Will need to create an APNS server that has the app certificates installed to talk to Apple’s APNS system • The architecture is the key to getting this right • We have 10 virtual servers that only handle APNS request (all database driven)
  18. Real World Examples iACH ACH Central Flight Manifest iTicketing Ambulance

    Checklist Pilots Info Guide (PIG) iCarehub Ground Manifest SDG Support eRequest Patient Survey TAD Some of ACH’s Apps
  19. Some Stats for ACH # of Production Apps 16 Active

    Users ~570 App Hits Daily / Monthly ~625 / 18K Push Notifications Sent Monthly 2400 +
  20. Final Thoughts • Enterprise development is on the rise •

    Barriers to entry are not as formidable as many imagine • The key is quality development & infrastructure. Any clown can write an app, spending the time to setup an system to make apps available, manage updates and secure things is what will convince senior leadership to adopt iOS development • Close relationships with your internal customers is key to a successful and productive app.
  21. Wrap Up • Session Keynote PDF will be available on

    speakerdeck later today - speakerdeck.com/eljaywilson • Best way to contact me is via email