building your own mobile enterprise application: it’s not as hard as you might think!
DESCRIPTION
TRANSCRIPT
Build Your Own Mobile Enterprise Application
It Isn’t as Hard as You Might Think
http://www.JasonConger.com
@JasonConger
http://www.linkedin.com/in/JasonConger
About Me
Object OrientationThink of applications as a Data Access Layer (DAL)
Loose Coupling
Off Topic?
A
Mobility Pack
Horizon View
VMware Unity Touch
Citrix Mobile Desktop
Theorem #1
Applications developed for native devices with native code are superior.
PlatformDevelopmentFramework
Language IDE
iOS iOS SDK Objective-C Cocoa, Xcode
Android Android SDK, Android NDK Java, C/C++Eclipse, NetBeans,
IntelliJ IDEA
WinPhone 7 Windows .NET & Silverlight SDK C# and others Visual Studio
Windows 8 Metro Style
AppsWinRT
C++/ C# / VB.NET / Javascript
Visual Studio
BlackberryJava ME + Optional Packages +
API extensionsJava Eclipse
ChromeOS Webkit HTML /CSS / Javascript Many
PlatformDevelopmentFramework
Language IDE
iOS iOS SDK Objective-C Cocoa, Xcode
Android Android SDK, Android NDK Java, C/C++Eclipse, NetBeans,
IntelliJ IDEA
WinPhone 7 Windows .NET & Silverlight SDK C# and others Visual Studio
Windows 8 Metro Style
AppsWinRT
C++/ C# / VB.NET / Javascript
Visual Studio
BlackberryJava ME + Optional Packages +
API extensionsJava Eclipse
ChromeOS Webkit HTML /CSS / Javascript Many
BYOD makes Theorem # 1 hard!
There’s More Than One Way to Skin a Cat
Web apps have been an option for years, but native applications dominated the mobile enterprise landscape. So what makes HTML5 special?
Web apps have been an option for years, but native applications dominated the mobile enterprise landscape. So what makes HTML5 special?
<canvas>
How HTML 5 Works
HTML
JSON/XML
Old and Busted
New Hotness
HTML5 Pros• Easier than native to code• Offline• No app store necessary• Some native device features available• Single code base for multiple platforms*• Software updates
HTML5 Cons• UI is not native• Browser based idiosyncrasies• Not all native device features available• No app-level VPN (3rd party needed)• No push notifications
Theorem #2 – Apps that Look Better are Perceived to be Better
How PhoneGap Works
• Chromeless Web Browser
• JS library to access native features
• Web Browser proxies bare metal requests
Getting Closer To The Device Without Native Code
DEMO
Theorem #3 – Inverse Proportions
PhoneGap Pros• Open source and free• ~Single code base (ex. phone buttons)• Fewer specialized skills needed ($$$)• More native capabilities than HTML5• “Feels” more native• Plugins for MDM solutions
PhoneGap Cons• WebView – depends on vendor
implementation• More sluggish than native (but getting better)• Mac needed to develop iOS apps• Not all native device features available – may
need to wait on framework updates
How Intel XDK Works
Intel XDK Pros• Drag and Drop design• Development is cross platform• No need for Mac (built in the Cloud)• No need to install 3rd party SDKs (built in the
Cloud)• Test on real device
Intel XDK Cons• It is still a hybrid app, so same cons as
PhoneGap• Stub app for testing on native device seems
kludgy
How Xamarin Works• C#/.NET on iOS and Android• Born out of the Mono Project
– An open source, cross-platform, implementation of C# and the Common Language Runtime (CLR) that is binary compatible with Microsoft.NET
How Microsoft .NET WorksMSIL
(Microsoft Intermediate Language)
DEMO
Xamarin Pros• Native Code!• Visual Studio integration• Drag and Drop designer• Code reuse – iOS, Android, Windows
Xamarin Cons• Still need a Mac for build• Apps will be larger• Full featured = $$$• Still need to learn native API’s
Citrix Mobile SDK for Windows Apps
How the Citrix Mobile SDK for Windows Apps Works
XenAppXenDestkop
HDX Virtual Channels
Client Device
Receiver
Receiver Core
MRVCVirtual Channel
XenApp/XenDesktop Machine
New
Modified
3rd Party Code
CtxSvcHost.exe
User Session
Mobile VC Client
COM Layer
Native App
Native Library .NET Assembly ID Dispatch
ManagedApp
Automation App
Location and Sensor VC Client
Location and Sensor
Virtual Channel
CtxSvcHost.exe
HDX
MRVC Virtual Channel Service
Location Virtual Channel Service
How the Citrix Mobile SDK for Windows Apps Works
DEMO
EXIF Data from photo used to extract GPS location and provide maps from Bing
Phone or SMS using native device
Take photo or video using native device
No Patient data is stored on the device.
Citrix Mobile SDK Pros• The data problem is solved• Utilize existing home-grown apps – add
features over time• Small learning curve
Citrix Mobile SDK Cons• No offline• Need source code• Users need to launch Citrix Receiver first• Slow application launch (compared to other
methods)• Requires Citrix infrastructure• Not quite as smooth (due to remoting)
Microsoft RDS options??Is there a Mobility Pack for Microsoft RDS?
Short answer…No.
Can it be done?
Well, sort of…but how?
Detect the remote device type and run an overlay application that simply hides the Task Bar and other components, and displays a user friendly interface
Remember progman.exe?
Detection of a Mobile DeviceHow to detect if a mobile device is accessing a Server Based Application?
The following is an example command script:usrlogon.cmd------------@ECHO OFF:startCTXCliOS.exeIF ERRORLEVEL 0 goto noOSIF ERRORLEVEL 1 goto winOSIF ERRORLEVEL 82 goto macOSIF ERRORLEVEL 83 goto iOSIF ERRORLEVEL 84 goto androidOSgoto noOS:winOSrem Client OS successfully matched to windowsecho Client OS is Windows.echo put other commands here for this client.goto end:macOSrem Client OS successfully matched to macecho Client OS is Mac.echo put other commands here for this client.goto end:iOSrem Client OS successfully matched to iOSecho Client OS is iOS.echo put other commands here for this client.goto end:androidOSrem Client OS successfully matched to androidecho Client OS is Android.echo put other commands here for this client.goto end:noOSecho NO CLient OS match.:end
CTXCliOS is a command-line tool for Citrix Servers to check the type of Operating System that is being run from the Client Machine that is running the Citrix Receiver or Plugin.
Usage:CTXCliOS [/?]
/? - Help information
The ERRORLEVEL return code shows the Client OS Type.The following are known OS types and their ERRORLEVEL return code
Client OS return code (decimal)============= =====================
Windows 1EPOC 10OS/2 11DOS32 14Linux 81Mac 82iOS 83Android 84Blackberry 85PlayBook 86Windows Mobile 87HTML5 257Java 261WinCE - HP 7945WinCE - Wyse 32940ThinOS - Wyse 32993
Resources• www.html5rocks.com• www.microsoftvirtualacademy.com• coenraets.org/blog/phonegap-tutorial/• developer.xamarin.com/guides/• www.ctrl-alt-del.com.au - Citrix Mobile SDK
stuff