Field enablement roadshow - Real World Solutions - John Pelak
1. Field Enablement:
Real World Solutions
A Look Inside
John Pelak
Practice Director, Devices & Mobility
BlueMetal
2. 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.
3. 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
4. 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 Service
5. 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
6. 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
7. 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
8. 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
9. 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
5 4
• Follow this cycle until stable
1. Select App Type
2. Upload Bundle
3. Select Devices/OSs
4. Run Tests
5. Review Results
Xamarin Test Cloud
10. 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
12. Building Inspectors
• iOS UX
• Sharable
Portable Class Library
• Implemented local sync of
content from cloud-hosted
ERP
Scenario Solution
• Need to enforce safety regulations on equipment
used in public settings
• Strong requirements for offline/disconnected
access, encrypted local storage, 2-way sync
13. • Win8 UX
• Sharable
Portable Class Library
• Implemented local sync of
enterprise content
Fire Prevention Specialists
Scenario Solution
• 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
14. 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
15. 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
16. 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
17. • Windows UX
• Sharable
Portable Class Library
reusable on iOS and/or
Android
• Encrypted 2-way data
sync via Zumero
Patent Attorneys
Scenario Solution
• Need trying cases and managing client billing
• Strong requirements for offline/disconnected
access, encrypted local storage, 2-way sync
18. 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
19. 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