18. Platform
Development
Framework
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
Apps
WinRT
C++/ C# / VB.NET /
Javascript
Visual Studio
Blackberry
Java ME + Optional Packages +
API extensions
Java Eclipse
ChromeOS Webkit HTML /CSS / Javascript Many
19. Platform
Development
Framework
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
Apps
WinRT
C++/ C# / VB.NET /
Javascript
Visual Studio
Blackberry
Java ME + Optional Packages +
API extensions
Java Eclipse
ChromeOS Webkit HTML /CSS / Javascript Many
25. How HTML 5 Works
HTML
JSON/XML
Old and Busted
New Hotness
26. 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
27. 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
28. Theorem #2 – Apps that Look Better
are Perceived to be Better
30. How PhoneGap Works
• Chromeless Web
Browser
• JS library to access
native features
• Web Browser proxies
bare metal requests
34. 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
35. 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
38. 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
39. Intel XDK Cons
• It is still a hybrid app, so same cons as
PhoneGap
• Stub app for testing on native device seems
kludgy
41. 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
47. How the Citrix Mobile SDK for Windows Apps Works
XenApp
XenDestkop
HDX Virtual Channels
48. Client Device
Receiver
Receiver
Core
MRVC
Virtual 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
Managed
App
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
50. 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.
51. Citrix Mobile SDK Pros
• The data problem is solved
• Utilize existing home-grown apps – add
features over time
• Small learning curve
52. 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)
53. 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?
54. Detection of a Mobile Device
How to detect if a mobile device is accessing a Server Based Application?
The following is an example command script:
usrlogon.cmd
------------
@ECHO OFF
:start
CTXCliOS.exe
IF ERRORLEVEL 0 goto noOS
IF ERRORLEVEL 1 goto winOS
IF ERRORLEVEL 82 goto macOS
IF ERRORLEVEL 83 goto iOS
IF ERRORLEVEL 84 goto androidOS
goto noOS
:winOS
rem Client OS successfully matched to windows
echo Client OS is Windows.
echo put other commands here for this client.
goto end
:macOS
rem Client OS successfully matched to mac
echo Client OS is Mac.
echo put other commands here for this client.
goto end
:iOS
rem Client OS successfully matched to iOS
echo Client OS is iOS.
echo put other commands here for this client.
goto end
:androidOS
rem Client OS successfully matched to android
echo Client OS is Android.
echo put other commands here for this client.
goto end
:noOS
echo 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 1
EPOC 10
OS/2 11
DOS32 14
Linux 81
Mac 82
iOS 83
Android 84
Blackberry 85
PlayBook 86
Windows Mobile 87
HTML5 257
Java 261
WinCE - HP 7945
WinCE - Wyse 32940
ThinOS - Wyse 32993
You are here, but why are you here? To learn how to solve pressing desktop and application delivery challenges – right?
Why do we deliver desktops? To deliver host applications. Do desktops actually do anything without applications?
Why do we deliver applications? Applications consume and create data, so applications are nothing without data.
Remember Object Oriented Applications/Design? One of the concepts of OO is having interchangeable layers. One of those layers is a data access layer (DAL).
I personally use a particular Excel document on multiple devices. I can view or edit the same file with multiple applications. This is similar to the “loose coupling” terminology used for OOP.
Why did I start off this presentation talking about the importance of data? This may seem like a tangent, but I want to emphasize that during mobile application development, you really need to focus on the data the user needs. This may be exposed via database, API like REST, document, script, etc.
Keep this in mind as we look at options for mobile applications.
Before we talk about building mobile apps, let’s talk about what we can do with remoting.
Since we are desktop and application delivery experts, sometimes our first thought is “Hey, we have a Citrix/VMware/RDS client for that device. Let’s deliver stuff to it just like a desktop.”
But, we don’t do this (right - right?).
The reason we don’t deliver full desktops to mobile devices is because the users will say, “This experience sucks! Therefore, you suck.” And, you are left with a big ole bucket of #FAIL.
There are some things we can do with remoting traditional desktop fat applications to mobile devices.
When your finger is your primary input device, application interfaces can be too small. Making things bigger via registry can help in this aspect. Some sample registry modifications are attached to the slide.
Citrix, VMware, and Microsoft have good options for remote desktops and apps.
Citrix Mobile Desktop
VMware Unity Touch (similar to Fusion)
RDP gestures as expected on desktop
PowWow – refactors application running on RDSH for mobile in real time
So let’s talk about mobile application development options.
What does it take to create native applications with native code?
Mobile app frameworks
jQuery Touch
Google Web Kit
Offline – HTML5 provides notification of offline and local storage, but implementation is still left up to the developer.
WebSockets
Web Workers
Canvas and WebGL
Access to native device features
- camera and photos
- geo location
Prior to HTML5, processing was done server side via technologies like PHP, ASP.NET, ColdFusion, etc. Only HTML was transferred to the client for presentation.
HTML5 allows apps to execute on the client and have 2-way communication with the server, or work offline.
* There are still a few browser based idiosyncrasies that need to be worked around
jQuery Mobile
Twitter Bootstrap 3
Sencha Touch
TopCoat
PhoneGap is basically a specialized chromeless web browser that has access to the device. This browser exposes special JavaScript methods that can be called to take advantage of the native device features.
PhoneGap gives you access to a lot of the phone’s features, but PhoneGap still isn’t a build-once deploy-anywhere reality. Also, you are remote to the data.
Painting a room – as things get easier, you waste more paint
Brush
Roller
Usability vs Security
Hybrid apps – each layer adds more translation and performance hit.
The Citrix Receiver on the mobile device is a native app and has access to native device features.
This is similar in concept to PhoneGap in that there is a hosting container for the app that provides device access. However, the code is executing on the server or desktop and only messages are sent to the hosting container.