SlideShare a Scribd company logo
1 of 55
Download to read offline
Build Your Own Mobile Enterprise
Application
It Isn’t as Hard as You Might Think
jason@jasonconger.com
http://www.JasonConger.com
@JasonConger
http://www.linkedin.com/in/JasonConger
About Me
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Object Orientation
Think of applications as a Data Access Layer (DAL)
Loose Coupling
Off Topic?
A
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Mobility
Pack
Horizon
View
VMware Unity Touch
Citrix Mobile Desktop
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
Theorem #1
Applications developed for native
devices with native code are
superior.
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
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
There’s More Than One Way to Skin a Cat
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
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
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
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
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
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
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!
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 Works
MSIL
(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
XenApp
XenDestkop
HDX Virtual Channels
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
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 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
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

More Related Content

What's hot

Android studio 2.2 Tips and Tricks
Android studio 2.2 Tips and TricksAndroid studio 2.2 Tips and Tricks
Android studio 2.2 Tips and TricksUptech
 
Introduction to Android Studio
Introduction to Android StudioIntroduction to Android Studio
Introduction to Android StudioMichael Pan
 
Experience The Best Android Programming Training Here | LW India
Experience The Best Android Programming Training Here | LW IndiaExperience The Best Android Programming Training Here | LW India
Experience The Best Android Programming Training Here | LW IndiaVishakhaTalmale
 
Android development
Android developmentAndroid development
Android developmentRaynax668
 
Synapseindia android app programming
Synapseindia android app programmingSynapseindia android app programming
Synapseindia android app programmingTarunsingh198
 
[Android] Introduction to Android Programming
[Android] Introduction to Android Programming[Android] Introduction to Android Programming
[Android] Introduction to Android ProgrammingNikmesoft Ltd
 
Introduction to Android programming
Introduction to Android programmingIntroduction to Android programming
Introduction to Android programmingSirwan Afifi
 
Exploring Android Studio
Exploring Android StudioExploring Android Studio
Exploring Android StudioAkshay Chordiya
 
Generating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving PerformanceGenerating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving PerformanceParesh Mayani
 
Dload mobile development
Dload mobile developmentDload mobile development
Dload mobile developmentSayed Ahmed
 
Android – As a tool of innovation
Android – As a tool of innovation Android – As a tool of innovation
Android – As a tool of innovation Pallab Sarkar
 
Anroid Tutorial Beginner level By SAMRAT TAYADE
Anroid Tutorial Beginner level By SAMRAT TAYADE Anroid Tutorial Beginner level By SAMRAT TAYADE
Anroid Tutorial Beginner level By SAMRAT TAYADE Samrat Tayade
 
Mobile development
Mobile developmentMobile development
Mobile developmentSayed Ahmed
 
Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11 Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11 Lars Vogel
 
Android installation guide
Android installation guideAndroid installation guide
Android installation guidemagicshui
 

What's hot (20)

Android studio 2.2 Tips and Tricks
Android studio 2.2 Tips and TricksAndroid studio 2.2 Tips and Tricks
Android studio 2.2 Tips and Tricks
 
Introduction to Android Studio
Introduction to Android StudioIntroduction to Android Studio
Introduction to Android Studio
 
Experience The Best Android Programming Training Here | LW India
Experience The Best Android Programming Training Here | LW IndiaExperience The Best Android Programming Training Here | LW India
Experience The Best Android Programming Training Here | LW India
 
Android development
Android developmentAndroid development
Android development
 
Android game ppt
Android game pptAndroid game ppt
Android game ppt
 
Synapseindia android app programming
Synapseindia android app programmingSynapseindia android app programming
Synapseindia android app programming
 
Android Studio vs. ADT
Android Studio vs. ADTAndroid Studio vs. ADT
Android Studio vs. ADT
 
[Android] Introduction to Android Programming
[Android] Introduction to Android Programming[Android] Introduction to Android Programming
[Android] Introduction to Android Programming
 
Introduction to Android programming
Introduction to Android programmingIntroduction to Android programming
Introduction to Android programming
 
Exploring Android Studio
Exploring Android StudioExploring Android Studio
Exploring Android Studio
 
Generating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving PerformanceGenerating efficient APK by Reducing Size and Improving Performance
Generating efficient APK by Reducing Size and Improving Performance
 
Dload mobile development
Dload mobile developmentDload mobile development
Dload mobile development
 
Intro to Android Programming
Intro to Android ProgrammingIntro to Android Programming
Intro to Android Programming
 
Android – As a tool of innovation
Android – As a tool of innovation Android – As a tool of innovation
Android – As a tool of innovation
 
Android installation guide
Android installation guideAndroid installation guide
Android installation guide
 
Anroid Tutorial Beginner level By SAMRAT TAYADE
Anroid Tutorial Beginner level By SAMRAT TAYADE Anroid Tutorial Beginner level By SAMRAT TAYADE
Anroid Tutorial Beginner level By SAMRAT TAYADE
 
Mobile development
Mobile developmentMobile development
Mobile development
 
Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11 Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11
 
Gdsc android introduction
Gdsc android introductionGdsc android introduction
Gdsc android introduction
 
Android installation guide
Android installation guideAndroid installation guide
Android installation guide
 

Similar to Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!

Mobile Enterprise Applications
Mobile Enterprise ApplicationsMobile Enterprise Applications
Mobile Enterprise ApplicationsJason Conger
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksSasha dos Santos
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiTaswar Bhatti
 
Xamarin Dev Days 2016 introduction to xamarin
Xamarin Dev Days 2016   introduction to xamarinXamarin Dev Days 2016   introduction to xamarin
Xamarin Dev Days 2016 introduction to xamarinDan Ardelean
 
Build Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilderBuild Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilderJeffrey T. Fritz
 
The Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App DevelopmentThe Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App DevelopmentNick Landry
 
HTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the FutureHTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the FutureMotorola Mobility - MOTODEV
 
Introduccion Xamarin Open Closed
Introduccion Xamarin Open ClosedIntroduccion Xamarin Open Closed
Introduccion Xamarin Open ClosedIvan Martinez
 
Mobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKMobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKIntel® Software
 
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformVisual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformStefano Ottaviani
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaNoam Kfir
 
Windows 10 UWP Development Overview
Windows 10 UWP Development OverviewWindows 10 UWP Development Overview
Windows 10 UWP Development OverviewDevGAMM Conference
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsPositive Hack Days
 
201500912 Hello Windows 10
201500912 Hello Windows 10201500912 Hello Windows 10
201500912 Hello Windows 10영욱 김
 
Hybrid App Development, Redefined
Hybrid App Development, RedefinedHybrid App Development, Redefined
Hybrid App Development, RedefinedIonic Framework
 
Azure MobileApp & Xamarin.Forms
Azure MobileApp & Xamarin.FormsAzure MobileApp & Xamarin.Forms
Azure MobileApp & Xamarin.FormsAlessandro Pozone
 
Xamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar PatnaikXamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar PatnaikMukteswar Patnaik
 
Cross platform mobile app development tools review
Cross platform mobile app development tools reviewCross platform mobile app development tools review
Cross platform mobile app development tools reviewUday Kothari
 

Similar to Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think! (20)

Mobile Enterprise Applications
Mobile Enterprise ApplicationsMobile Enterprise Applications
Mobile Enterprise Applications
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworks
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar Bhatti
 
Xamarin Dev Days 2016 introduction to xamarin
Xamarin Dev Days 2016   introduction to xamarinXamarin Dev Days 2016   introduction to xamarin
Xamarin Dev Days 2016 introduction to xamarin
 
Build Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilderBuild Your First iPhone or Android App with Telerik AppBuilder
Build Your First iPhone or Android App with Telerik AppBuilder
 
Android - Anroid Pproject
Android - Anroid PprojectAndroid - Anroid Pproject
Android - Anroid Pproject
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
The Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App DevelopmentThe Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App Development
 
HTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the FutureHTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the Future
 
Introduccion Xamarin Open Closed
Introduccion Xamarin Open ClosedIntroduccion Xamarin Open Closed
Introduccion Xamarin Open Closed
 
Mobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKMobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDK
 
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformVisual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using Cordova
 
Windows 10 UWP Development Overview
Windows 10 UWP Development OverviewWindows 10 UWP Development Overview
Windows 10 UWP Development Overview
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
 
201500912 Hello Windows 10
201500912 Hello Windows 10201500912 Hello Windows 10
201500912 Hello Windows 10
 
Hybrid App Development, Redefined
Hybrid App Development, RedefinedHybrid App Development, Redefined
Hybrid App Development, Redefined
 
Azure MobileApp & Xamarin.Forms
Azure MobileApp & Xamarin.FormsAzure MobileApp & Xamarin.Forms
Azure MobileApp & Xamarin.Forms
 
Xamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar PatnaikXamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar Patnaik
 
Cross platform mobile app development tools review
Cross platform mobile app development tools reviewCross platform mobile app development tools review
Cross platform mobile app development tools review
 

Recently uploaded

Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 

Recently uploaded (20)

Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 

Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!

  • 1. Build Your Own Mobile Enterprise Application It Isn’t as Hard as You Might Think
  • 6. Object Orientation Think of applications as a Data Access Layer (DAL)
  • 17. Theorem #1 Applications developed for native devices with native code are superior.
  • 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
  • 20. There’s More Than One Way to Skin a Cat
  • 22. Web apps have been an option for years, but native applications dominated the mobile enterprise landscape. So what makes HTML5 special?
  • 23. Web apps have been an option for years, but native applications dominated the mobile enterprise landscape. So what makes HTML5 special?
  • 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
  • 31. Getting Closer To The Device Without Native Code
  • 32. DEMO
  • 33. Theorem #3 – Inverse Proportions
  • 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
  • 37. How Intel XDK Works
  • 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
  • 42. How Microsoft .NET Works MSIL (Microsoft Intermediate Language)
  • 43. DEMO
  • 44. Xamarin Pros • Native Code! • Visual Studio integration • Drag and Drop designer • Code reuse – iOS, Android, Windows
  • 45. Xamarin Cons • Still need a Mac for build • Apps will be larger • Full featured = $$$ • Still need to learn native API’s
  • 46. Citrix Mobile SDK for Windows Apps
  • 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
  • 49. DEMO
  • 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
  • 55. 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

Editor's Notes

  1. You are here, but why are you here? To learn how to solve pressing desktop and application delivery challenges – right?
  2. Why do we deliver desktops? To deliver host applications. Do desktops actually do anything without applications?
  3. Why do we deliver applications? Applications consume and create data, so applications are nothing without data.
  4. 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).
  5. 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.
  6. 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.
  7. Before we talk about building mobile apps, let’s talk about what we can do with remoting.
  8. 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?).
  9. 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.
  10. 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.
  11. 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
  12. So let’s talk about mobile application development options.
  13. What does it take to create native applications with native code?
  14. Mobile app frameworks jQuery Touch Google Web Kit
  15. 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
  16. 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.
  17. * There are still a few browser based idiosyncrasies that need to be worked around
  18. jQuery Mobile Twitter Bootstrap 3 Sencha Touch TopCoat
  19. 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.
  20. 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.
  21. 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.
  22. 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.