SlideShare a Scribd company logo
MOBILE APP DEVELOPMENT WITH
Pranav Ainavolu
Microsoft MVP | Core @ MUGH
http://pranavon.net/
@a_pranav
App delivery
lifecycle
Design & Develop
TestMonitor
100+ apps 1000+ devices
Cross platform != Hybrid
Xamarin != React Native,
Phonegap etc.
Customer pays for experience
not for technology
* Experience here relates to end user experience (UX: User Experience) offered to
the customer by your app/website
I have a question for you
What device do you use?
Cross-Platform Mobile Development
▪ Building High quality apps is hard
• Different presentation styles, interaction
styles and software stack
• Different screen sizes, input modes and
hardware capabilities
• New devices and OS versions are introduced
multiple times per year
• New consumer applications regularly
extend and revise the standards and
set the bar higher for good mobile
applications
Client Technology Choices
Silo: Build App Multiple Times
No shared code • Many languages & development environments • Multiple teams
Objective-C
in
Xcode
Java
in
Android
Studio
C#
in
Visual Studio
▪ Full native experience
▪ Total access to the device as provided
by SDK
▪ Share Web API
▪ Minimal re-use mostly on back end
Web API
▪ Higher development cost from
multiple teams (silo teams) or
expensive multi-device developers
▪ Multiple codebases to maintain and
extend
▪ One platform rules the others are
subservient
Benefits Challenges
Silo: Build App Multiple Times
HTML: Write Once, Run Everywhere
App
Generator
Lua
Javascript
Actionscript
HTML+CSS
Limited native API access • Slow performance • Poor user experience
Target Browser Not OS
Web Site
▪ Provide consist experience regardless
of target
▪ Cheap as it is just HTML
▪ Single codebase to maintain and
extend
▪ No need for revenue sharing as no
need to be in app stores
▪ User experience tends to be webish
and not native
▪ Need to still test and debug multiple
targets
▪ Features tend to be a subset common
to all targets
Benefits Challenges
HTML: Write App using Mobile Web
Cross platform mobile app development with Xamarin
Xamarin Approach
Xamarin Forms Approach
Shared UI Code
Shared vs PCL (Portable Class Library)
▪ A Shared Project is not directly
compiled (.dll is not generated),
instead files are compiled into .dll of
project that references it
▪ Can write platform specific code in a
same file using compiler directives
#ifdef
▪ Cluttered implementation for large
projects
▪ Cannot be used other than Xamarin
projects




• Shared • PCL (Portable Class Library)
Shared code implementation
Shared vs PCL (Portable Class Library)
▪ Shared code restricted into compiling directives is more difficult to read, slowing
down the development process.
▪ PCL code is much cleaner and maintanable but that is subjective to your
development practices (you may end up writing too much boiler plate code)
▪ If you are starting with Xamarin PCL is a better choice for better usability and
compatibility across other .NET platforms
Which suits better?
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Xamarin + Xamarin.Forms Approach
▪ Quickly and easily build native user
interfaces using shared code
▪ Xamarin.Forms elements map to native
controls and behaviors
▪ Mix-and-match Xamarin.Forms with
native APIs
Shared UI Code
Native Performance
Xamarin.iOS does full Ahead Of
Time (AOT) compilation to
produce an ARM binary for
Apple’s App Store.
Xamarin.Android takes advantage of
Just In Time (JIT) compilation on the
Android device.
Anything you can do in Objective-C, Swift, or Java
can be done in C# and Visual Studio with Xamarin.
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
✓ 40+ Pages, layouts, and controls
(Build from code behind or XAML)
✓ Two-way data binding
✓ Navigation
✓ Animation API
✓ Dependency Service
✓ Messaging Center
Shared C# Backend
Shared UI Code
Layouts
Pages
Stack Absolute Relative Grid ContentView ScrollView Frame
Content MasterDetail Navigation Tabbed Carousel
ActivityIndicator BoxView Button DatePicker Editor
Entry Image Label ListView Map
OpenGLView Picker ProgressBar SearchBar Slider
Stepper TableView TimePicker WebView EntryCell
ImageCell SwitchCell TextCell ViewCell
Xamarin.Forms Ecosystem
<?xml version="1.0" encoding="UTF-8"?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.MainPage">
<TabbedPage.Children>
<ContentPage Title="Profile" Icon="Profile.png">
<StackLayout Spacing="20" Padding="20"
VerticalOptions="Center">
<Entry Placeholder="Username"
Text="{Binding Username}"/>
<Entry Placeholder="Password"
Text="{Binding Password}"
IsPassword="true"/>
<Button Text="Login" TextColor="White"
BackgroundColor="#77D065"
Command="{Binding LoginCommand}"/>
</StackLayout>
</ContentPage>
<ContentPage Title="Settings" Icon="Settings.png">
<!-- Settings -->
</ContentPage>
</TabbedPage.Children>
</TabbedPage>
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
macOS Preview
Enhanced GestureRecognizers
Android Support Libraries
PlatformSpecifics
Fast Scroll
NavigationPage Translucency
Blur Behind
Partial Collapse MasterPage
Native Control Binding
Map Extensibility
Fast Renderers Preview
Startup Time
ListView Scrolling
Memory Improvements
XAMLC
Bindable Picker
Frame Corners
Tizen
Forms Previewer
FlexLayout Preview
Xamarin.Forms Embedding
DataPages
Source: Matthew Robbins - MFractor
Get Started Today
xamarin.com
Useful resources
http://bit.do/xamuniyoutube
http://bit.do/getxamarinuniveristy
https://azure.microsoft.com
https://docs.microsoft.com
Introducing
Microsoft Azure
What is the cloud?
Cross platform mobile app development with Xamarin
On Premises
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Applications
Runtime
Youmanage
Infrastructure
(as a Service)
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Applications
Runtime
ManagedbyMicrosoft
Youmanage
Platform
(as a Service)
ManagedbyMicrosoft
Youmanage
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Runtime
Data
Software
(as a Service)
ManagedbyMicrosoft
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Runtime
Data
Cloud Services hungry kya!
On Premises
Made at home
Toppings
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Soda
Dining Table
Electricity/Gas
Youmanage
IaaS
Take and Bake
Topping
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Soda
Dining Table
Electricity/Gas
ManagedbyVendor
Youmanage
PaaS
Pizza delivered
ManagedbyVendor
Youmanage
Topping
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Dinning Table
Electricity/Gas
Soda
SaaS
Dine out
ManagedbyVendor
Topping
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Dinning Table
Electricity/Gas
Soda
Cross platform mobile app development with Xamarin
Why the
cloud?
• Rapidly setup environments to drive business
priorities
• Scale to meet peak demands
• Increase daily activities, efficiency and reduced cost.
Infrastructure
designed for Scale
Demo: Azure Portal
Azure App Service
Build and scale great cloud apps
Web Apps
Mobile Apps
Logic Apps
API Apps
.NET, Java, Node.js, PHP, Python
Auto patching
Auto scale
Integration with existing apps
Continuous deployment
Cross platform mobile app development with Xamarin
RESTAPI
Offline
sync
Facebook Twitter Microsoft Google Azure Active
Directory
Azure Mobile Apps
WindowsAndroid
Chrome
iOS
OSX
In-AppKindle
Backend code
SQL MongoTables O365 API Apps
Offline Sync
Cross platform mobile app development with Xamarin
Create a Mobile Service
MobileService = new MobileServiceClient(
"https://myapp.azurewebsites.net");
Create tables
IMobileServiceSyncTable<TodoItem> syncTable;
public async Task Init()
{
const string path = "syncstore.db";
var db = new MobileServiceSQLiteStore(path);
db.DefineTable<TodoItem>();
}
await MobileService.SyncContext.InitializeAsync(db);
syncTable = MobileService.GetSyncTable<TodoItem>();
Push and pull with sync table
private async Task SyncAsync()
{
await MobileService.SyncContext.PushAsync();
var query = syncTable.CreateQuery();
await syncTable.PullAsync("todoItems", query);
}
private async Task InsertTodoItem(TodoItem todoItem)
{
await syncTable.InsertAsync(todoItem);
await MobileService.SyncContext.PushAsync();
}
Query local table
public async Task<IEnumerable<TodoItem>> GetOpenItemsAsync()
{
return await todoTable
.Where(item => item.Complete == false)
.ToEnumerableAsync();
}
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Notification Hub
• Maps between tags and handles
1. Get PNS handle
4. Send to device
2. Store PNS handle 3b. Request notification
Use device handles
3a. Request notification
Use logical users/tags
5. Manage device handles
Cross platform mobile app development with Xamarin
Shopping Demo App
Azure Services:
• Cognitive Services (Emotion API)
• Storage
• On/offline sync
• Push notifications
• Authentication
What’s Available:
• Complete sample app with documentation
• Individual “quick starts”
github.com/Microsoft/XamarinAzure_ShoppingDemoApp
Shared C# codebase • 100% native API access • High performance
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile C# Server
Linux/Mono
CoreCLRAzure
Shared C# Client/Server
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Get started today at
http://azure.microsoft.com
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
https://appcenter.ms/signup
Cross platform mobile app development with Xamarin
Our pipeline
Code CI Test Deploy Monitor
We are so agile
Code CI Test Deploy Monitor
Our pipeline
And slow
Code CI Test Deploy Monitor
Our pipeline
And slow
Code CI Test Deploy Monitor
Our pipeline
Let’s speed it up
Cross platform mobile app development with Xamarin
Monthly Active Users
Failure to learn, failure to succeed
Monthly Active Users
Us
The competition
How do you solve this problem?
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin
Live Update
Storage
Push Notifications
Crash Reporting
Identity
Tables
Live Update Storage
Push Notifications
Crash Reporting IdentityTables
Visual Studio Mobile Center
Mission control for mobile apps
Delivering continuously means
learning continuously
Cross platform mobile app development with Xamarin
Visual Studio App Center
Automate your entire mobile app
lifecycle in a few easy steps
Deliver high-quality apps that keep
users coming back for more
Move faster and increase quality with
the tools you already use—we
support a wide variety of platforms
Get started today!
Cross platform mobile app development with Xamarin
Cross platform mobile app development with Xamarin

More Related Content

What's hot (18)

PPTX
Sitecore on Azure
ClearPeople
 
PDF
Intro to azure logic apps
nj-azure
 
PPTX
Integrating SaaS application using Microsoft’s Azure App Service Platform
BizTalk360
 
PPTX
Azure Big Picture
Azure Riyadh User Group
 
PDF
Best practices deploying Sitecore to Microsoft Azure
Thom Puiman
 
PPTX
Azure App Service Deep Dive
Azure Riyadh User Group
 
PDF
Trivadis TechEvent 2017 Der Azure App Service by Manuel Meyer
Trivadis
 
PDF
Create and manage a web application on Azure (step to step tutorial)
Lee Stott
 
PPTX
Get Started with Azure
Buwaneka De Silva
 
PPTX
Webinar: Top Reasons to Implement Windows Azure for your Business
HARMAN Services
 
PDF
Serverless computing con Azure Functions
Hernan Guzman
 
PDF
Azure App Services для создания бэкенда мобильных приложений. Parse Open Sour...
UA Mobile
 
PDF
Sitecore hosted on azure
Jeremy (Jerry) Norman-Nott
 
PPTX
David Schneider: Sort your (child's) Legos with Cognitive Services
David Schneider
 
PPTX
Azure app services API apps
Panagiotis Tsilopoulos
 
PDF
Azure web apps
Vaibhav Gujral
 
PPTX
Firebase.pptx
siddhiiAgarwal
 
PPTX
Firebase.pptx
TanviBudhabaware
 
Sitecore on Azure
ClearPeople
 
Intro to azure logic apps
nj-azure
 
Integrating SaaS application using Microsoft’s Azure App Service Platform
BizTalk360
 
Azure Big Picture
Azure Riyadh User Group
 
Best practices deploying Sitecore to Microsoft Azure
Thom Puiman
 
Azure App Service Deep Dive
Azure Riyadh User Group
 
Trivadis TechEvent 2017 Der Azure App Service by Manuel Meyer
Trivadis
 
Create and manage a web application on Azure (step to step tutorial)
Lee Stott
 
Get Started with Azure
Buwaneka De Silva
 
Webinar: Top Reasons to Implement Windows Azure for your Business
HARMAN Services
 
Serverless computing con Azure Functions
Hernan Guzman
 
Azure App Services для создания бэкенда мобильных приложений. Parse Open Sour...
UA Mobile
 
Sitecore hosted on azure
Jeremy (Jerry) Norman-Nott
 
David Schneider: Sort your (child's) Legos with Cognitive Services
David Schneider
 
Azure app services API apps
Panagiotis Tsilopoulos
 
Azure web apps
Vaibhav Gujral
 
Firebase.pptx
siddhiiAgarwal
 
Firebase.pptx
TanviBudhabaware
 

Similar to Cross platform mobile app development with Xamarin (20)

PPTX
App innovationcircles xamarin
Mohit Chhabra
 
PPTX
Xamarin COE by Mukteswar Patnaik
Mukteswar Patnaik
 
PPTX
Develop business apps cross-platform development using visual studio with x...
Alexander Meijers
 
PDF
Xamarin Platform
Rui Marinho
 
PDF
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Nick Landry
 
PPTX
Designing mobile applications with xamarin
Jerel Hass
 
PPTX
Xamarin.Forms: a cross-platform mobile UI toolkit - ConFoo 2016
Guy Barrette
 
PPSX
Mobile App Development and Xamarin as a Complete Mobile Solution
Mukteswar Patnaik
 
PPTX
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
RedFabriQ
 
PDF
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
YASH Technologies
 
PDF
Building Connected and Disconnected Mobile Applications
Josiah Renaudin
 
PPTX
Introduction to xamarin
Alejandro Ruiz Varela
 
PPT
C# rocks
bryan costanich
 
PPTX
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
Rainer Stropek
 
PPTX
Xamarin Open House talk - Sela Group - Ofir Makmal
Ofir Makmal
 
PPTX
Xamarin and SAP Mobile Platform for Mobile Enterprise Success
Xamarin
 
PPTX
Introduction to Cross Platform Mobile Apps (Xamarin)
BizTalk360
 
PPTX
What's new in Xamarin.Forms
Rui Marinho
 
PPTX
[MobConf] Go mobile with C#, Visual Studio & Xamarin
Nish Anil
 
KEY
Cross-platform Mobile Development
Xamarin
 
App innovationcircles xamarin
Mohit Chhabra
 
Xamarin COE by Mukteswar Patnaik
Mukteswar Patnaik
 
Develop business apps cross-platform development using visual studio with x...
Alexander Meijers
 
Xamarin Platform
Rui Marinho
 
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Nick Landry
 
Designing mobile applications with xamarin
Jerel Hass
 
Xamarin.Forms: a cross-platform mobile UI toolkit - ConFoo 2016
Guy Barrette
 
Mobile App Development and Xamarin as a Complete Mobile Solution
Mukteswar Patnaik
 
20140207 xamarin-red fabriq-microsoft-techdays-nativemobileappdevelopmentwith...
RedFabriQ
 
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
YASH Technologies
 
Building Connected and Disconnected Mobile Applications
Josiah Renaudin
 
Introduction to xamarin
Alejandro Ruiz Varela
 
C# rocks
bryan costanich
 
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
Rainer Stropek
 
Xamarin Open House talk - Sela Group - Ofir Makmal
Ofir Makmal
 
Xamarin and SAP Mobile Platform for Mobile Enterprise Success
Xamarin
 
Introduction to Cross Platform Mobile Apps (Xamarin)
BizTalk360
 
What's new in Xamarin.Forms
Rui Marinho
 
[MobConf] Go mobile with C#, Visual Studio & Xamarin
Nish Anil
 
Cross-platform Mobile Development
Xamarin
 
Ad

More from Pranav Ainavolu (20)

PPTX
Containerization with Azure
Pranav Ainavolu
 
PPTX
ASP.NET Core Overview
Pranav Ainavolu
 
PPTX
Understanding Basics of Machine Learning
Pranav Ainavolu
 
PPTX
Starting Mobile Development
Pranav Ainavolu
 
PPTX
Connected & Disconnected Apps with Azure Mobile Apps
Pranav Ainavolu
 
PPTX
Xamarin Dev Days - Xamarin.Forms
Pranav Ainavolu
 
PPTX
Native iOS, Android apps using Xamarin.Forms dotnetConf2016 Hyderabad
Pranav Ainavolu
 
PPTX
Xamarin Forms
Pranav Ainavolu
 
PPTX
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
Pranav Ainavolu
 
PPTX
Building A Conversational Bot Using Bot Framework and Microsoft
Pranav Ainavolu
 
PPTX
The Internet of Things with Azure Service Bus
Pranav Ainavolu
 
PPTX
Dev/Test Scenarios in the DevOps World
Pranav Ainavolu
 
PPTX
Using Visual Studio to build XAML Universal Apps
Pranav Ainavolu
 
PPTX
Designing cross-platform User Interface with native performance using Xamarin...
Pranav Ainavolu
 
PPTX
Building Windows Store apps with HTML & Javascript
Pranav Ainavolu
 
PPTX
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
Pranav Ainavolu
 
PPTX
Whats New in the Visual Studio 2013 IDE
Pranav Ainavolu
 
PPTX
Building Apps for Office 2013
Pranav Ainavolu
 
PPTX
Whats New in Excel 2013
Pranav Ainavolu
 
PPTX
Windows8 and Windows Azure Mobile Services
Pranav Ainavolu
 
Containerization with Azure
Pranav Ainavolu
 
ASP.NET Core Overview
Pranav Ainavolu
 
Understanding Basics of Machine Learning
Pranav Ainavolu
 
Starting Mobile Development
Pranav Ainavolu
 
Connected & Disconnected Apps with Azure Mobile Apps
Pranav Ainavolu
 
Xamarin Dev Days - Xamarin.Forms
Pranav Ainavolu
 
Native iOS, Android apps using Xamarin.Forms dotnetConf2016 Hyderabad
Pranav Ainavolu
 
Xamarin Forms
Pranav Ainavolu
 
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
Pranav Ainavolu
 
Building A Conversational Bot Using Bot Framework and Microsoft
Pranav Ainavolu
 
The Internet of Things with Azure Service Bus
Pranav Ainavolu
 
Dev/Test Scenarios in the DevOps World
Pranav Ainavolu
 
Using Visual Studio to build XAML Universal Apps
Pranav Ainavolu
 
Designing cross-platform User Interface with native performance using Xamarin...
Pranav Ainavolu
 
Building Windows Store apps with HTML & Javascript
Pranav Ainavolu
 
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
Pranav Ainavolu
 
Whats New in the Visual Studio 2013 IDE
Pranav Ainavolu
 
Building Apps for Office 2013
Pranav Ainavolu
 
Whats New in Excel 2013
Pranav Ainavolu
 
Windows8 and Windows Azure Mobile Services
Pranav Ainavolu
 
Ad

Recently uploaded (20)

PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
July Patch Tuesday
Ivanti
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Biography of Daniel Podor.pdf
Daniel Podor
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 

Cross platform mobile app development with Xamarin

  • 2. Pranav Ainavolu Microsoft MVP | Core @ MUGH http://pranavon.net/ @a_pranav
  • 3. App delivery lifecycle Design & Develop TestMonitor 100+ apps 1000+ devices
  • 5. Xamarin != React Native, Phonegap etc.
  • 6. Customer pays for experience not for technology * Experience here relates to end user experience (UX: User Experience) offered to the customer by your app/website
  • 7. I have a question for you What device do you use?
  • 8. Cross-Platform Mobile Development ▪ Building High quality apps is hard • Different presentation styles, interaction styles and software stack • Different screen sizes, input modes and hardware capabilities • New devices and OS versions are introduced multiple times per year • New consumer applications regularly extend and revise the standards and set the bar higher for good mobile applications
  • 10. Silo: Build App Multiple Times No shared code • Many languages & development environments • Multiple teams Objective-C in Xcode Java in Android Studio C# in Visual Studio
  • 11. ▪ Full native experience ▪ Total access to the device as provided by SDK ▪ Share Web API ▪ Minimal re-use mostly on back end Web API ▪ Higher development cost from multiple teams (silo teams) or expensive multi-device developers ▪ Multiple codebases to maintain and extend ▪ One platform rules the others are subservient Benefits Challenges Silo: Build App Multiple Times
  • 12. HTML: Write Once, Run Everywhere App Generator Lua Javascript Actionscript HTML+CSS Limited native API access • Slow performance • Poor user experience
  • 13. Target Browser Not OS Web Site
  • 14. ▪ Provide consist experience regardless of target ▪ Cheap as it is just HTML ▪ Single codebase to maintain and extend ▪ No need for revenue sharing as no need to be in app stores ▪ User experience tends to be webish and not native ▪ Need to still test and debug multiple targets ▪ Features tend to be a subset common to all targets Benefits Challenges HTML: Write App using Mobile Web
  • 18. Shared vs PCL (Portable Class Library) ▪ A Shared Project is not directly compiled (.dll is not generated), instead files are compiled into .dll of project that references it ▪ Can write platform specific code in a same file using compiler directives #ifdef ▪ Cluttered implementation for large projects ▪ Cannot be used other than Xamarin projects     • Shared • PCL (Portable Class Library)
  • 20. Shared vs PCL (Portable Class Library) ▪ Shared code restricted into compiling directives is more difficult to read, slowing down the development process. ▪ PCL code is much cleaner and maintanable but that is subjective to your development practices (you may end up writing too much boiler plate code) ▪ If you are starting with Xamarin PCL is a better choice for better usability and compatibility across other .NET platforms Which suits better?
  • 23. Xamarin + Xamarin.Forms Approach ▪ Quickly and easily build native user interfaces using shared code ▪ Xamarin.Forms elements map to native controls and behaviors ▪ Mix-and-match Xamarin.Forms with native APIs Shared UI Code
  • 24. Native Performance Xamarin.iOS does full Ahead Of Time (AOT) compilation to produce an ARM binary for Apple’s App Store. Xamarin.Android takes advantage of Just In Time (JIT) compilation on the Android device.
  • 25. Anything you can do in Objective-C, Swift, or Java can be done in C# and Visual Studio with Xamarin.
  • 28. ✓ 40+ Pages, layouts, and controls (Build from code behind or XAML) ✓ Two-way data binding ✓ Navigation ✓ Animation API ✓ Dependency Service ✓ Messaging Center Shared C# Backend Shared UI Code
  • 29. Layouts Pages Stack Absolute Relative Grid ContentView ScrollView Frame Content MasterDetail Navigation Tabbed Carousel
  • 30. ActivityIndicator BoxView Button DatePicker Editor Entry Image Label ListView Map OpenGLView Picker ProgressBar SearchBar Slider Stepper TableView TimePicker WebView EntryCell ImageCell SwitchCell TextCell ViewCell
  • 32. <?xml version="1.0" encoding="UTF-8"?> <TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyApp.MainPage"> <TabbedPage.Children> <ContentPage Title="Profile" Icon="Profile.png"> <StackLayout Spacing="20" Padding="20" VerticalOptions="Center"> <Entry Placeholder="Username" Text="{Binding Username}"/> <Entry Placeholder="Password" Text="{Binding Password}" IsPassword="true"/> <Button Text="Login" TextColor="White" BackgroundColor="#77D065" Command="{Binding LoginCommand}"/> </StackLayout> </ContentPage> <ContentPage Title="Settings" Icon="Settings.png"> <!-- Settings --> </ContentPage> </TabbedPage.Children> </TabbedPage>
  • 36. macOS Preview Enhanced GestureRecognizers Android Support Libraries PlatformSpecifics Fast Scroll NavigationPage Translucency Blur Behind Partial Collapse MasterPage Native Control Binding Map Extensibility Fast Renderers Preview Startup Time ListView Scrolling Memory Improvements XAMLC Bindable Picker Frame Corners Tizen Forms Previewer FlexLayout Preview Xamarin.Forms Embedding DataPages
  • 41. What is the cloud?
  • 43. On Premises Storage Servers Networking O/S Middleware Virtualization Data Applications Runtime Youmanage Infrastructure (as a Service) Storage Servers Networking O/S Middleware Virtualization Data Applications Runtime ManagedbyMicrosoft Youmanage Platform (as a Service) ManagedbyMicrosoft Youmanage Storage Servers Networking O/S Middleware Virtualization Applications Runtime Data Software (as a Service) ManagedbyMicrosoft Storage Servers Networking O/S Middleware Virtualization Applications Runtime Data
  • 44. Cloud Services hungry kya! On Premises Made at home Toppings Tomato Sauce Cheese Fire Owen Pizza Dough Soda Dining Table Electricity/Gas Youmanage IaaS Take and Bake Topping Tomato Sauce Cheese Fire Owen Pizza Dough Soda Dining Table Electricity/Gas ManagedbyVendor Youmanage PaaS Pizza delivered ManagedbyVendor Youmanage Topping Tomato Sauce Cheese Fire Owen Pizza Dough Dinning Table Electricity/Gas Soda SaaS Dine out ManagedbyVendor Topping Tomato Sauce Cheese Fire Owen Pizza Dough Dinning Table Electricity/Gas Soda
  • 46. Why the cloud? • Rapidly setup environments to drive business priorities • Scale to meet peak demands • Increase daily activities, efficiency and reduced cost.
  • 49. Azure App Service Build and scale great cloud apps Web Apps Mobile Apps Logic Apps API Apps .NET, Java, Node.js, PHP, Python Auto patching Auto scale Integration with existing apps Continuous deployment
  • 51. RESTAPI Offline sync Facebook Twitter Microsoft Google Azure Active Directory Azure Mobile Apps WindowsAndroid Chrome iOS OSX In-AppKindle Backend code SQL MongoTables O365 API Apps Offline Sync
  • 53. Create a Mobile Service MobileService = new MobileServiceClient( "https://myapp.azurewebsites.net");
  • 54. Create tables IMobileServiceSyncTable<TodoItem> syncTable; public async Task Init() { const string path = "syncstore.db"; var db = new MobileServiceSQLiteStore(path); db.DefineTable<TodoItem>(); } await MobileService.SyncContext.InitializeAsync(db); syncTable = MobileService.GetSyncTable<TodoItem>();
  • 55. Push and pull with sync table private async Task SyncAsync() { await MobileService.SyncContext.PushAsync(); var query = syncTable.CreateQuery(); await syncTable.PullAsync("todoItems", query); } private async Task InsertTodoItem(TodoItem todoItem) { await syncTable.InsertAsync(todoItem); await MobileService.SyncContext.PushAsync(); }
  • 56. Query local table public async Task<IEnumerable<TodoItem>> GetOpenItemsAsync() { return await todoTable .Where(item => item.Complete == false) .ToEnumerableAsync(); }
  • 59. Notification Hub • Maps between tags and handles 1. Get PNS handle 4. Send to device 2. Store PNS handle 3b. Request notification Use device handles 3a. Request notification Use logical users/tags 5. Manage device handles
  • 61. Shopping Demo App Azure Services: • Cognitive Services (Emotion API) • Storage • On/offline sync • Push notifications • Authentication What’s Available: • Complete sample app with documentation • Individual “quick starts” github.com/Microsoft/XamarinAzure_ShoppingDemoApp
  • 62. Shared C# codebase • 100% native API access • High performance iOS C# UI Windows C# UIAndroid C# UI Shared C# Mobile C# Server Linux/Mono CoreCLRAzure Shared C# Client/Server
  • 66. Get started today at http://azure.microsoft.com
  • 71. Our pipeline Code CI Test Deploy Monitor We are so agile
  • 72. Code CI Test Deploy Monitor Our pipeline And slow
  • 73. Code CI Test Deploy Monitor Our pipeline And slow
  • 74. Code CI Test Deploy Monitor Our pipeline Let’s speed it up
  • 77. Failure to learn, failure to succeed
  • 79. How do you solve this problem?
  • 83. Live Update Storage Push Notifications Crash Reporting Identity Tables
  • 84. Live Update Storage Push Notifications Crash Reporting IdentityTables Visual Studio Mobile Center Mission control for mobile apps
  • 87. Visual Studio App Center Automate your entire mobile app lifecycle in a few easy steps Deliver high-quality apps that keep users coming back for more Move faster and increase quality with the tools you already use—we support a wide variety of platforms