field enablement roadshow - real world solutions - john pelak
DESCRIPTION
John Pelak presents real world solutions at BlueMetal's Field Enablement Roadshow, September 2014TRANSCRIPT
John PelakPractice Director, Devices & MobilityBlueMetal
Field Enablement:Real World SolutionsA Look Inside
Field Enablement – What It Is
What it is:
The modernization of field force applications.
Delivering and collecting rich content within complex data and processing environments.
Real World Solutions – A Look Inside• Architectures such as one illustrated here have been
successful enabling mobile field workers in several scenarios:
• Building Inspectors enforcing safety regulations on equipment used in public settings
• Fire Prevention Professionals testing water supply pressure and flow
• Healthcare Providers visiting patients and managing continuing education requirements
• Insurance Agents engaging customers in video chat + real-time collaboration
• Lab Scientists reviewing and verifying data in highly regulated settings
• Patent Attorneys trying cases and managing client billing
• Personal Trainers reviewing data captured during client workouts
• Technical Sales Reps providing secure demos of NDA-only products and services
• We’ll discuss the architecture of these solutions, and then drill into the details of each
iOS/OS X Applications
Cocoa Touch, Cocoa
Windows Applications
WinRT, .NET
Android Applications
KitKat, Jellybean,Ice Cream Sandwich…
Portable Class Library
Cloud Service
Mobile Development – Unification on C#
• Mobile development projects can pose a daunting set of competing priorities for the team to balance:
• Device vendors want developers to code exclusively for their devices
• Device vendors begrudgingly support HTML5 standards
• http://caniuse.com for feature-by-feature details• Users want great app experiences• Project sponsors want to reach broadest array of
devices with least amount of code
• Xamarin provides a great solution for balancing these completing priorities by unifying mobile development on the C# programming language
• can use Visual Studio on Windows as development tool
• can use Xamarin Studio on OS X as development tool
• For many scenarios, this approach is optimal
iOS/OS X Applications
Cocoa Touch, Cocoa
Windows Applications
WinRT, .NET
Android Applications
KitKat, Jellybean,Ice Cream Sandwich…
Portable Class Library
Cloud ServiceC#
Portable Class Libraries – Complier-Checked Sharing
• Portable Class Libraries facilitate sharing across mobile platforms
• Non-UI code can be reused across devices – compiler be used can ensure compatibility as shown:
• This facilitates development using design patterns such as M-V-VM or MVC
• Reusable frameworks for M-V-VM enable sharing Model and ViewModel code across platforms
iOS/OS X Applications
Cocoa Touch, Cocoa
Windows Applications
WinRT, .NET
Android Applications
KitKat, Jellybean,Ice Cream Sandwich…
Portable Class Library
Cloud Service
Shared Components – Accelerating Development
• Xamarin provides an extensive catalog of components reusable across mobile platforms
• http://components.xamarin.com• at last count there were 217 components available –
can be filtered by platform, price, rating, etc.• These components can provide simple, tested, solutions for
common scenarios• authentication, analytics, cloud-storage, etc.
• There are also platform-specific components with Xamarin bindings available
iOS/OS X Applications
Cocoa Touch, Cocoa
Windows Applications
WinRT, .NET
Android Applications
KitKat, Jellybean,Ice Cream Sandwich…
Portable Class Library
Cloud Service
Native Apps – No-Compromise User Experiences
• Xamarin can reach the native frameworks for popular mobile platforms:
• iOS, Android, Windows, OS X
• Thus, Xamarin can provide direct access to native platform features like:
• Android’s LocationManager, iOS’s Asset Library, etc.
• Native user interface gestures, idioms, and programming patterns are preserved
• They’re just mapped to C# language equivalents
• This enables Xamarin developers to deliver great user experiences and to have access to nearly all* device features* might need to build a Xamarin binding to wrap some
deeper features
iOS/OS X Applications
Cocoa Touch, Cocoa
Windows Applications
WinRT, .NET
Android Applications
KitKat, Jellybean,Ice Cream Sandwich…
Portable Class Library
Cloud Service
Dependency Injection – Balancing Native/Shared
• Often, portable code will need to interact with platform-specific code
• How to avoid taking platform dependencies while maintaining shareable logic?
• Dependency Injection solves this problem by defining portable abstractions that are implemented for each platform
• Abstractions are defined in the Portable Class Library• Implementations are provided for each platform• IoC containers can be configured to connect interface
to implementation on each platform
• These techniques enable developers to strike the right balance between native code implementations and portable abstractions
iOS/OS X Applications
Cocoa Touch, Cocoa
Windows Applications
WinRT, .NET
Android Applications
KitKat, Jellybean,Ice Cream Sandwich…
Portable Class Library
Cloud Service
Testing – Covering the Broadest Range of Users• Xamarin Test Cloud enables
automated app testing across devices and OS versions
• probably way more than you have access to
1
2
3
45
• Follow this cycle until stable1. Select App Type2. Upload Bundle
3. Select Devices/OSs4. Run Tests
5. Review Results
Xamarin Test Cloud
Pre-Release Deployment – Getting App to Testers
for iOS apps for Android/Windows apps• TestFlight works well for getting iOS apps to
friendly community of testers• need proper distribution certificate + provisioning
profile first
• File sharing (or even email attachments) can be quite effective
• but note that attachments can be quite large and very binary
Scenarios, Solutions, and Analysis
Building Inspectors
• iOS UX
• Sharable Portable Class Library
• Implemented local sync of content from cloud-hosted ERP
SolutionScenario
• Need to enforce safety regulations on equipment used in public settings
• Strong requirements for offline/disconnected access, encrypted local storage, 2-way sync
• Win8 UX
• Sharable Portable Class Library
• Implemented local sync of enterprise content
Fire Prevention Specialists
SolutionScenario
• Need to testing water supply pressure and flow to minimize exposure to fire loss
• Strong requirements for offline/disconnected access, encrypted local storage, 2-way sync
Healthcare Providers
Solution• iOS UX
• Sharable Portable Class Library
• Any media playable in WKWebView can be viewed
Scenario
Analysis
• Need visiting patients and managing continuing education requirements
• Strong requirement for a no-compromise native user experience – especially around media playback
Excellent shared code
base
Insurance Agents
Solution• iOS + Windows
UX
• Sharable Portable Class Library
• Video conferencing using AddLive, collab using SignalR
Scenario
Analysis
• Need to engage customers in video conference + realtime collaboration to increase agents reach
• Strong requirement for a branded, no-configuration solution (no external apps or account provisioning)
Excellent shared code
base
Lab Scientists
Solution• iOS + Android
UX
• Wrapped existing service stack in RESTful interface
• Sharing code via Portable Class Library
Scenario
Analysis
• Need to review and verify experiment data in highly regulated settings
• Strong requirement for reuse of certified service stack
Excludes Ms of lines of
service code
• Windows UX
• Sharable Portable Class Library reusable on iOS and/or Android
• Encrypted 2-way data sync via Zumero
Patent Attorneys
SolutionScenario
• Need trying cases and managing client billing
• Strong requirements for offline/disconnected access, encrypted local storage, 2-way sync
Personal Trainers
Solution• iOS, Android,
and Win8 UX
• Shared Portable Class Library
• Dependency Injection for native implementation of shared abstractions
Scenario
Analysis
• Coaches review data captured during client workouts to help with holistic exercise management
• Strong requirements for native access to device capabilities for location + speech synthesis
Nice reuse across
platforms
Technical Sales Reps
Solution• Win8 UX
• Ported Obj-C iOS code to sharable Portable Class Library
• Implemented local sync of Cloud Content
Scenario
• Need to providing secure demos of NDA-only products and services
• Strong requirements for offline/disconnected access, encrypted local storage, 2-way sync
Questions?