SlideShare a Scribd company logo
1 of 45
• 
• 
• 
•
 
 
 
 
 
 
 
 
 

 
 
 
 

 

Um Código-fonte 
Um Projeto 
Um Binário 
Múltiplas Platformas!
Perspectiva do Usuário: 
“Compro a app apenas uma vez, e 
posso usá-la em todos os meus 
dispositivos Windows. Configurações e 
compras “in-app” migram entre meus 
dispositivos" reuso 
“A app tem tema e funcionalidades 
similares nos dois dispositivos" reuso 
“Mas a experiência e recursos são 
adaptados ao dispositivo” com 
adaptações
Definição da Store: 
Use o mesmo Package Full Name (PFN) 
ao fazer o upload nas duas Stores (Windows Phone e 
Windows) 
• O “badge universal” aparecerá nas listagens das Stores 
• Compre a app em uma store, e o mesmo PFN contará 
como comprado na outra 
• Compre um item durável em uma store, e o mesmo 
contará como comprado na outra 
• Dados poderão migrar entre apps em múltiplos 
dispositivos desde que as mesmas compartilhem o PFN
 
 

 
 
 
 
 
 
 
 

Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Shared Projects 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
App.xaml 
App1_Windows81 
References 
App1_PCL 
App.xaml 
App1_PCL 
Class1.cs 
Page1.xaml 
Asset1.png 
.NET PCLs 
compartilhando binários 
Solution 'App1' 
App1_Phone81 
MyData.cs 
App1_Windows81 
MyData.cs 
MyWebservice 
MyData.cs 
Linked files 
compartilhando código
Solution 'App1' 
App1_Phone81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
App1_Windows81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Solution 'App1' 
App1_Phone81 
MyData.cs 
App1_Windows81 
MyData.cs 
MyWebservice 
MyData.cs 
Linked files 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Shared Projects 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
App.xaml 
App1_Windows81 
References 
App1_PCL 
App.xaml 
App1_PCL 
Class1.cs 
Page1.xaml 
Asset1.png 
.NET PCLs 
compartilhando binários
Solution 'App1' 
App1_Phone81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
App1_Windows81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Solution 'App1' 
App1_Phone81 
MyData.cs 
App1_Windows81 
MyData.cs 
MyWebservice 
MyData.cs 
Linked files 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Shared Projects 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
App.xaml 
App1_Windows81 
References 
App1_PCL 
App.xaml 
App1_PCL 
Class1.cs 
Page1.xaml 
Asset1.png 
.NET PCLs 
compartilhando binários
Solution 'App1' 
App1_Phone81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
App1_Windows81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Solution 'App1' 
App1_Phone81 
MyData.cs 
App1_Windows81 
MyData.cs 
MyWebservice 
MyData.cs 
Linked files 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Shared Projects 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
App.xaml 
App1_Windows81 
References 
App1_PCL 
App.xaml 
App1_PCL 
Class1.cs 
Page1.xaml 
Asset1.png 
.NET PCLs 
compartilhando binários
Solution 'App1' 
App1_Phone81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
App1_Windows81 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Solution 'App1' 
App1_Phone81 
MyData.cs 
App1_Windows81 
MyData.cs 
MyWebservice 
MyData.cs 
Linked files 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
Page1.xaml 
App.xaml 
Asset1.png 
Shared Projects 
compartilhando código 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
App.xaml 
App1_Windows81 
References 
App1_PCL 
App.xaml 
App1_PCL 
Class1.cs 
Page1.xaml 
Asset1.png 
.NET PCLs 
compartilhando binários
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared/PCL 
Class1.cs 
private void OnSuspending(object sender, SuspendingEventArgs e) 
{ 
// TODO: Save application state and stop any background activity 
ApplicationData.Current.RoamingSettings.Values["IsBurnt"] = model.IsBurnt; 
ApplicationData.Current.RoamingSettings.Values["Velocity"] = model.Velocity; 
} 
// TODO: Load state from previously suspended application 
model.IsBurnt = (bool?)ApplicationData.Current.RoamingSettings.Values["IsBurnt"] 
?? false; 
model.Velocity = (double?)ApplicationData.Current.RoamingSettings.Values["Velocity"] 
?? 1.0;
Dentro do meu código comum, preciso 
“ajustá-lo” com uma chamada específica 
de um dispositivo. 
Como fazer isto?
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
#if block 
fácil e rápido 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
PhoneImpl.cs 
App1_Windows81 
References 
App1_PCL 
WinImpl.cs 
App1_PCL 
Class1.cs 
IAbstraction.cs 
Inversion of Control (IOC) 
pattern que também funciona com PCL 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
ViewModel.cs 
App1_Windows81 
References 
App1_Shared 
ViewModel.cs 
App1_Shared 
Class1.cs 
ViewModel.cs 
Partial classes 
mais organizado
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
ViewModel.cs 
App1_Windows81 
References 
App1_Shared 
ViewModel.cs 
App1_Shared 
Class1.cs 
ViewModel.cs 
Partial classes 
mais organizado 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
PhoneImpl.cs 
App1_Windows81 
References 
App1_PCL 
WinImpl.cs 
App1_PCL 
Class1.cs 
IAbstraction.cs 
Inversion of Control (IOC) 
pattern que também funciona com PCL 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
#if block 
fácil e rápido 
#if WINDOWS_PHONE_APP 
StatusBar.GetForCurrentView().HideAsync(); 
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareBackPressed; 
#endif 
#if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP 
StatusBar::GetForCurrentView()->HideAsync(); 
#endif
// I can provide my own implementation of the missing APIs !!! 
namespace Windows.UI.ViewManagement 
{ 
Solution 'App1' 
public class StatusBar 
{ 
App1_Phone81 
References 
App1_Shared 
ViewModel.cs 
App1_Windows81 
References 
App1_Shared 
ViewModel.cs 
App1_Shared 
Class1.cs 
ViewModel.cs 
Partial classes 
mais organizado 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
PhoneImpl.cs 
App1_Windows81 
References 
App1_PCL 
WinImpl.cs 
App1_PCL 
Class1.cs 
IAbstraction.cs 
Inversion of Control (IOC) 
pattern que também funciona com PCL 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
#if block 
fácil e rápido 
#if WINDOWS_PHONE_APP 
StatusBar.GetForCurrentView().HideAsync(); 
#endif 
static StatusBar dummy = new StatusBar(); 
public static StatusBar GetForCurrentView() { return dummy; } 
public async Task HideAsync() {} 
} 
}
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
ViewModel.cs 
App1_Windows81 
References 
App1_Shared 
ViewModel.cs 
App1_Shared 
Class1.cs 
ViewModel.cs 
Partial classes 
mais organizado 
// PhoneViewModel.cs 
public partial class ViewModel 
{ 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
PhoneImpl.cs 
App1_Windows81 
References 
App1_PCL 
WinImpl.cs 
App1_PCL 
Class1.cs 
IAbstraction.cs 
Inversion of Control (IOC) 
pattern que também funciona com PCL 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
#if block 
fácil e rápido 
// WindowsViewModel.cs 
public partial class ViewModel 
{ 
async Task HideStatusBarAsync() { } 
} 
async Task HideStatusBarAsync() 
{ 
await StatusBar.GetForCurrentView() 
.HideAsync(); 
} 
} 
// SharedClass1.cs 
await viewModel.HideStatusBarAsync();
// PhonePhoneImpl.cs 
public class PhonePAL : IPlatformAbstractionLayer 
{ 
async Task HideStatusBarAsync() 
{ 
Solution 'App1' 
await StatusBar.GetForCurrentView() 
App1_Phone81 
.HideAsync(); 
References 
App1_Shared 
ViewModel.cs 
App1_Windows81 
} 
} 
// WindowsWinImpl.cs 
References 
public class WindowsPAL: IPlatformAbstractionLayer 
App1_Shared 
{ 
ViewModel.cs 
async Task HideStatusBarAsync() { } 
App1_Shared 
Class1.cs 
ViewModel.cs 
} 
// Shared 
public interface IPlatformAbstractionLayer 
{ 
Task HideStatusBarAsync(); 
Partial classes 
mais organizado 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
PhoneImpl.cs 
App1_Windows81 
References 
App1_PCL 
WinImpl.cs 
App1_PCL 
Class1.cs 
IAbstraction.cs 
Inversion of Control (IOC) 
pattern que também funciona com PCL 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
#if block 
} 
fácil e rápido 
await pal.HideStatusBarAsync();
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
App1_Windows81 
References 
App1_Shared 
App1_Shared 
Class1.cs 
#if block 
fácil e rápido 
Solution 'App1' 
App1_Phone81 
References 
App1_PCL 
PhoneImpl.cs 
App1_Windows81 
References 
App1_PCL 
WinImpl.cs 
App1_PCL 
Class1.cs 
IAbstraction.cs 
Inversion of Control (IOC) 
pattern que também funciona com PCL 
Solution 'App1' 
App1_Phone81 
References 
App1_Shared 
ViewModel.cs 
App1_Windows81 
References 
App1_Shared 
ViewModel.cs 
App1_Shared 
Class1.cs 
ViewModel.cs 
Partial classes 
mais organizado
 
 
 
 
 

 
 
 
 
 
 
 
 

<Page.BottomAppBar> 
<CommandBar> 
<AppBarButton Icon="Accept" Label="Accept" /> 
<AppBarButton Icon="Cancel" Label="Cancel" /> 
<CommandBar.SecondaryCommands> 
<AppBarButton x:Uid="AboutAppBarButton" Icon="Help" /> 
<AppBarButton x:Uid="HomeAppBarButton" Icon="Home" /> 
</CommandBar.SecondaryCommands> 
</CommandBar> 
</Page.BottomAppBar>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Construindo Universal Apps para Windows e Windows Phone
Construindo Universal Apps para Windows e Windows Phone

More Related Content

What's hot

Selenium interview questions
Selenium interview questionsSelenium interview questions
Selenium interview questionsgirichinna27
 
Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021Svetlin Nakov
 
Developing better debug_components
Developing better debug_componentsDeveloping better debug_components
Developing better debug_componentsTomoaki Imai
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11ColdFusionConference
 
Introduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backendIntroduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backendJoseluis Laso
 
Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2tahirraza
 
An Overview of Selenium
An Overview of SeleniumAn Overview of Selenium
An Overview of Seleniumadamcarmi
 
Selenium interview Q&A
Selenium interview Q&ASelenium interview Q&A
Selenium interview Q&APavan Kumar
 
Best Strategy for Developing App Architecture and High Quality App
Best Strategy for Developing App Architecture and High Quality AppBest Strategy for Developing App Architecture and High Quality App
Best Strategy for Developing App Architecture and High Quality AppFlurry, Inc.
 
Appium basics
Appium basicsAppium basics
Appium basicsSyam Sasi
 
Revisions
RevisionsRevisions
Revisionsswat_kh
 
Selenium test automation
Selenium test automationSelenium test automation
Selenium test automationSrikanth Vuriti
 
(Christian heilman) firefox
(Christian heilman) firefox(Christian heilman) firefox
(Christian heilman) firefoxNAVER D2
 

What's hot (17)

Codename one
Codename oneCodename one
Codename one
 
Selenium interview questions
Selenium interview questionsSelenium interview questions
Selenium interview questions
 
Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021
 
Developing better debug_components
Developing better debug_componentsDeveloping better debug_components
Developing better debug_components
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
 
Selenium
SeleniumSelenium
Selenium
 
Introduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backendIntroduction to Titanium and how to connect with a PHP backend
Introduction to Titanium and how to connect with a PHP backend
 
Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2
 
An Overview of Selenium
An Overview of SeleniumAn Overview of Selenium
An Overview of Selenium
 
Selenium interview Q&A
Selenium interview Q&ASelenium interview Q&A
Selenium interview Q&A
 
Best Strategy for Developing App Architecture and High Quality App
Best Strategy for Developing App Architecture and High Quality AppBest Strategy for Developing App Architecture and High Quality App
Best Strategy for Developing App Architecture and High Quality App
 
Appium basics
Appium basicsAppium basics
Appium basics
 
Revisions
RevisionsRevisions
Revisions
 
Selenium test automation
Selenium test automationSelenium test automation
Selenium test automation
 
Android programming-basics
Android programming-basicsAndroid programming-basics
Android programming-basics
 
(Christian heilman) firefox
(Christian heilman) firefox(Christian heilman) firefox
(Christian heilman) firefox
 
Hybrid framework
Hybrid frameworkHybrid framework
Hybrid framework
 

Viewers also liked

Loja de aplicativos e portal do desenvolvedor
Loja de aplicativos e portal do desenvolvedorLoja de aplicativos e portal do desenvolvedor
Loja de aplicativos e portal do desenvolvedorMarlon Luz
 
Homo Appiens - O ser humano que desenvolve Apps. Você é um?
Homo Appiens - O ser humano que desenvolve Apps. Você é um?Homo Appiens - O ser humano que desenvolve Apps. Você é um?
Homo Appiens - O ser humano que desenvolve Apps. Você é um?Marlon Luz
 
Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1Marlon Luz
 
Como a Microsoft faz software: Desgerenciando Pessoas
Como a Microsoft faz software: Desgerenciando PessoasComo a Microsoft faz software: Desgerenciando Pessoas
Como a Microsoft faz software: Desgerenciando PessoasMarlon Luz
 
O que há de novo no Windows Phone
O que há de novo no Windows PhoneO que há de novo no Windows Phone
O que há de novo no Windows PhoneMarlon Luz
 
Microsoft & Internet of Things
Microsoft & Internet of ThingsMicrosoft & Internet of Things
Microsoft & Internet of ThingsMarlon Luz
 

Viewers also liked (7)

Loja de aplicativos e portal do desenvolvedor
Loja de aplicativos e portal do desenvolvedorLoja de aplicativos e portal do desenvolvedor
Loja de aplicativos e portal do desenvolvedor
 
Homo Appiens - O ser humano que desenvolve Apps. Você é um?
Homo Appiens - O ser humano que desenvolve Apps. Você é um?Homo Appiens - O ser humano que desenvolve Apps. Você é um?
Homo Appiens - O ser humano que desenvolve Apps. Você é um?
 
Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1Nokia Asha App Development - Part 1
Nokia Asha App Development - Part 1
 
Como a Microsoft faz software: Desgerenciando Pessoas
Como a Microsoft faz software: Desgerenciando PessoasComo a Microsoft faz software: Desgerenciando Pessoas
Como a Microsoft faz software: Desgerenciando Pessoas
 
O que há de novo no Windows Phone
O que há de novo no Windows PhoneO que há de novo no Windows Phone
O que há de novo no Windows Phone
 
La place des dispositifs médicaux dans la stratégie nationale de santé
La place des dispositifs médicaux dans la stratégie nationale de santéLa place des dispositifs médicaux dans la stratégie nationale de santé
La place des dispositifs médicaux dans la stratégie nationale de santé
 
Microsoft & Internet of Things
Microsoft & Internet of ThingsMicrosoft & Internet of Things
Microsoft & Internet of Things
 

Similar to Construindo Universal Apps para Windows e Windows Phone

Construindo Universal apps para Windows e Windows Phone
Construindo Universal apps para Windows e Windows PhoneConstruindo Universal apps para Windows e Windows Phone
Construindo Universal apps para Windows e Windows PhoneCaio Chaves Garcez
 
Deeper into Windows 10 Development
Deeper into Windows 10 DevelopmentDeeper into Windows 10 Development
Deeper into Windows 10 DevelopmentShahed Chowdhuri
 
Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説shinobu takahashi
 
android training_material ravy ramio
android training_material ravy ramioandroid training_material ravy ramio
android training_material ravy ramioslesulvy
 
Classification of the document
Classification of the documentClassification of the document
Classification of the documentthink_cloud
 
Embedded c lab and keil c manual
Embedded  c  lab  and keil c  manualEmbedded  c  lab  and keil c  manual
Embedded c lab and keil c manualHari K
 
echo-o & Adobe Air App Dev - BarCamp Saigon 1
echo-o & Adobe Air App Dev - BarCamp Saigon 1echo-o & Adobe Air App Dev - BarCamp Saigon 1
echo-o & Adobe Air App Dev - BarCamp Saigon 1huyzing
 
Btb017 David
Btb017 DavidBtb017 David
Btb017 DavidRohit Ray
 
Lecture 4 display_principles
Lecture 4 display_principlesLecture 4 display_principles
Lecture 4 display_principlesmoduledesign
 
Google Glass Mirror API Setup
Google Glass Mirror API SetupGoogle Glass Mirror API Setup
Google Glass Mirror API SetupDiana Michelle
 
Lecture 4 display_principles
Lecture 4 display_principlesLecture 4 display_principles
Lecture 4 display_principlesmoduledesign
 
Windows phone 8 overview
Windows phone 8 overviewWindows phone 8 overview
Windows phone 8 overviewcodeblock
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019 Allan De Castro
 
Titanium appcelerator my first app
Titanium appcelerator my first appTitanium appcelerator my first app
Titanium appcelerator my first appAlessio Ricco
 
Universal Apps Oct 2014
Universal Apps Oct 2014Universal Apps Oct 2014
Universal Apps Oct 2014Joe Healy
 

Similar to Construindo Universal Apps para Windows e Windows Phone (20)

Construindo Universal apps para Windows e Windows Phone
Construindo Universal apps para Windows e Windows PhoneConstruindo Universal apps para Windows e Windows Phone
Construindo Universal apps para Windows e Windows Phone
 
Deeper into Windows 10 Development
Deeper into Windows 10 DevelopmentDeeper into Windows 10 Development
Deeper into Windows 10 Development
 
Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説Windows Phone 8.1 アプリ開発徹底解説
Windows Phone 8.1 アプリ開発徹底解説
 
android training_material ravy ramio
android training_material ravy ramioandroid training_material ravy ramio
android training_material ravy ramio
 
Classification of the document
Classification of the documentClassification of the document
Classification of the document
 
Ng2 cli
Ng2 cliNg2 cli
Ng2 cli
 
Embedded c lab and keil c manual
Embedded  c  lab  and keil c  manualEmbedded  c  lab  and keil c  manual
Embedded c lab and keil c manual
 
echo-o & Adobe Air App Dev - BarCamp Saigon 1
echo-o & Adobe Air App Dev - BarCamp Saigon 1echo-o & Adobe Air App Dev - BarCamp Saigon 1
echo-o & Adobe Air App Dev - BarCamp Saigon 1
 
Btb017 David
Btb017 DavidBtb017 David
Btb017 David
 
Lecture 4 display_principles
Lecture 4 display_principlesLecture 4 display_principles
Lecture 4 display_principles
 
Windows 8 BootCamp
Windows 8 BootCampWindows 8 BootCamp
Windows 8 BootCamp
 
Google Glass Mirror API Setup
Google Glass Mirror API SetupGoogle Glass Mirror API Setup
Google Glass Mirror API Setup
 
Lecture 4 display_principles
Lecture 4 display_principlesLecture 4 display_principles
Lecture 4 display_principles
 
Windows phone 8 overview
Windows phone 8 overviewWindows phone 8 overview
Windows phone 8 overview
 
DDive11 - Mobile Development For Domino
DDive11 - Mobile Development For DominoDDive11 - Mobile Development For Domino
DDive11 - Mobile Development For Domino
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
 
Apache cordova
Apache cordovaApache cordova
Apache cordova
 
Intro to Android Programming
Intro to Android ProgrammingIntro to Android Programming
Intro to Android Programming
 
Titanium appcelerator my first app
Titanium appcelerator my first appTitanium appcelerator my first app
Titanium appcelerator my first app
 
Universal Apps Oct 2014
Universal Apps Oct 2014Universal Apps Oct 2014
Universal Apps Oct 2014
 

More from Marlon Luz

Agilidade em aplicativos mobile
Agilidade em aplicativos mobileAgilidade em aplicativos mobile
Agilidade em aplicativos mobileMarlon Luz
 
Loja de Aplicativos e Portal do Desenvolvedor
Loja de Aplicativos e Portal do DesenvolvedorLoja de Aplicativos e Portal do Desenvolvedor
Loja de Aplicativos e Portal do DesenvolvedorMarlon Luz
 
Desenvolvendo Apps para Windows phone
Desenvolvendo Apps para Windows phoneDesenvolvendo Apps para Windows phone
Desenvolvendo Apps para Windows phoneMarlon Luz
 
Desenvolvimento para Windows Phone
Desenvolvimento para Windows PhoneDesenvolvimento para Windows Phone
Desenvolvimento para Windows PhoneMarlon Luz
 
Babel fish, Guias e APIs
Babel fish, Guias e APIsBabel fish, Guias e APIs
Babel fish, Guias e APIsMarlon Luz
 
Desenvolvimento de Apps para celulares Nokia Lumia & Nokia asha
Desenvolvimento de Apps para celulares Nokia Lumia & Nokia ashaDesenvolvimento de Apps para celulares Nokia Lumia & Nokia asha
Desenvolvimento de Apps para celulares Nokia Lumia & Nokia ashaMarlon Luz
 
Potencialidades de um telefone celular para pessoas com necessidades especiais
Potencialidades de um telefone celular para pessoas com necessidades especiaisPotencialidades de um telefone celular para pessoas com necessidades especiais
Potencialidades de um telefone celular para pessoas com necessidades especiaisMarlon Luz
 
Nokia Asha App Development - Part 2
Nokia Asha App Development - Part 2Nokia Asha App Development - Part 2
Nokia Asha App Development - Part 2Marlon Luz
 
Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2Marlon Luz
 
Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1Marlon Luz
 
Distribua sua App para o mundo e ganhe $$
Distribua sua App para o mundo e ganhe $$Distribua sua App para o mundo e ganhe $$
Distribua sua App para o mundo e ganhe $$Marlon Luz
 
Desenvolvendo Games para Nokia Asha
Desenvolvendo Games para Nokia AshaDesenvolvendo Games para Nokia Asha
Desenvolvendo Games para Nokia AshaMarlon Luz
 
Programação para mobile: Serviços e Aplicativos
Programação para mobile: Serviços e AplicativosProgramação para mobile: Serviços e Aplicativos
Programação para mobile: Serviços e AplicativosMarlon Luz
 
In-app purchasing for java me apps
In-app purchasing for java me appsIn-app purchasing for java me apps
In-app purchasing for java me appsMarlon Luz
 
Aprenda a programar somente o necessário com Mogli: O menino lobo
Aprenda a programar somente o necessário com Mogli: O menino loboAprenda a programar somente o necessário com Mogli: O menino lobo
Aprenda a programar somente o necessário com Mogli: O menino loboMarlon Luz
 
AgileBrazil - Fazendo do Scrum um Game para melhor adoção do framework
AgileBrazil - Fazendo do Scrum um Game para melhor adoção do frameworkAgileBrazil - Fazendo do Scrum um Game para melhor adoção do framework
AgileBrazil - Fazendo do Scrum um Game para melhor adoção do frameworkMarlon Luz
 
Conhecendo gamification
Conhecendo gamificationConhecendo gamification
Conhecendo gamificationMarlon Luz
 
Fazendo do Scrum um Game para Melhor Adoção do Framework
Fazendo do Scrum um Game para Melhor Adoção do FrameworkFazendo do Scrum um Game para Melhor Adoção do Framework
Fazendo do Scrum um Game para Melhor Adoção do FrameworkMarlon Luz
 

More from Marlon Luz (18)

Agilidade em aplicativos mobile
Agilidade em aplicativos mobileAgilidade em aplicativos mobile
Agilidade em aplicativos mobile
 
Loja de Aplicativos e Portal do Desenvolvedor
Loja de Aplicativos e Portal do DesenvolvedorLoja de Aplicativos e Portal do Desenvolvedor
Loja de Aplicativos e Portal do Desenvolvedor
 
Desenvolvendo Apps para Windows phone
Desenvolvendo Apps para Windows phoneDesenvolvendo Apps para Windows phone
Desenvolvendo Apps para Windows phone
 
Desenvolvimento para Windows Phone
Desenvolvimento para Windows PhoneDesenvolvimento para Windows Phone
Desenvolvimento para Windows Phone
 
Babel fish, Guias e APIs
Babel fish, Guias e APIsBabel fish, Guias e APIs
Babel fish, Guias e APIs
 
Desenvolvimento de Apps para celulares Nokia Lumia & Nokia asha
Desenvolvimento de Apps para celulares Nokia Lumia & Nokia ashaDesenvolvimento de Apps para celulares Nokia Lumia & Nokia asha
Desenvolvimento de Apps para celulares Nokia Lumia & Nokia asha
 
Potencialidades de um telefone celular para pessoas com necessidades especiais
Potencialidades de um telefone celular para pessoas com necessidades especiaisPotencialidades de um telefone celular para pessoas com necessidades especiais
Potencialidades de um telefone celular para pessoas com necessidades especiais
 
Nokia Asha App Development - Part 2
Nokia Asha App Development - Part 2Nokia Asha App Development - Part 2
Nokia Asha App Development - Part 2
 
Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2
 
Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1Game Development for Nokia Asha Devices with Java ME #1
Game Development for Nokia Asha Devices with Java ME #1
 
Distribua sua App para o mundo e ganhe $$
Distribua sua App para o mundo e ganhe $$Distribua sua App para o mundo e ganhe $$
Distribua sua App para o mundo e ganhe $$
 
Desenvolvendo Games para Nokia Asha
Desenvolvendo Games para Nokia AshaDesenvolvendo Games para Nokia Asha
Desenvolvendo Games para Nokia Asha
 
Programação para mobile: Serviços e Aplicativos
Programação para mobile: Serviços e AplicativosProgramação para mobile: Serviços e Aplicativos
Programação para mobile: Serviços e Aplicativos
 
In-app purchasing for java me apps
In-app purchasing for java me appsIn-app purchasing for java me apps
In-app purchasing for java me apps
 
Aprenda a programar somente o necessário com Mogli: O menino lobo
Aprenda a programar somente o necessário com Mogli: O menino loboAprenda a programar somente o necessário com Mogli: O menino lobo
Aprenda a programar somente o necessário com Mogli: O menino lobo
 
AgileBrazil - Fazendo do Scrum um Game para melhor adoção do framework
AgileBrazil - Fazendo do Scrum um Game para melhor adoção do frameworkAgileBrazil - Fazendo do Scrum um Game para melhor adoção do framework
AgileBrazil - Fazendo do Scrum um Game para melhor adoção do framework
 
Conhecendo gamification
Conhecendo gamificationConhecendo gamification
Conhecendo gamification
 
Fazendo do Scrum um Game para Melhor Adoção do Framework
Fazendo do Scrum um Game para Melhor Adoção do FrameworkFazendo do Scrum um Game para Melhor Adoção do Framework
Fazendo do Scrum um Game para Melhor Adoção do Framework
 

Recently uploaded

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 

Recently uploaded (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Construindo Universal Apps para Windows e Windows Phone

  • 1.
  • 3.
  • 4.          
  • 5.     
  • 7.
  • 8. Um Código-fonte Um Projeto Um Binário Múltiplas Platformas!
  • 9.
  • 10.
  • 11. Perspectiva do Usuário: “Compro a app apenas uma vez, e posso usá-la em todos os meus dispositivos Windows. Configurações e compras “in-app” migram entre meus dispositivos" reuso “A app tem tema e funcionalidades similares nos dois dispositivos" reuso “Mas a experiência e recursos são adaptados ao dispositivo” com adaptações
  • 12. Definição da Store: Use o mesmo Package Full Name (PFN) ao fazer o upload nas duas Stores (Windows Phone e Windows) • O “badge universal” aparecerá nas listagens das Stores • Compre a app em uma store, e o mesmo PFN contará como comprado na outra • Compre um item durável em uma store, e o mesmo contará como comprado na outra • Dados poderão migrar entre apps em múltiplos dispositivos desde que as mesmas compartilhem o PFN
  • 14.
  • 15.
  • 16.         
  • 17. Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs Page1.xaml App.xaml Asset1.png Shared Projects compartilhando código Solution 'App1' App1_Phone81 References App1_PCL App.xaml App1_Windows81 References App1_PCL App.xaml App1_PCL Class1.cs Page1.xaml Asset1.png .NET PCLs compartilhando binários Solution 'App1' App1_Phone81 MyData.cs App1_Windows81 MyData.cs MyWebservice MyData.cs Linked files compartilhando código
  • 18. Solution 'App1' App1_Phone81 Class1.cs Page1.xaml App.xaml Asset1.png App1_Windows81 Class1.cs Page1.xaml App.xaml Asset1.png Solution 'App1' App1_Phone81 MyData.cs App1_Windows81 MyData.cs MyWebservice MyData.cs Linked files compartilhando código Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs Page1.xaml App.xaml Asset1.png Shared Projects compartilhando código Solution 'App1' App1_Phone81 References App1_PCL App.xaml App1_Windows81 References App1_PCL App.xaml App1_PCL Class1.cs Page1.xaml Asset1.png .NET PCLs compartilhando binários
  • 19. Solution 'App1' App1_Phone81 Class1.cs Page1.xaml App.xaml Asset1.png App1_Windows81 Class1.cs Page1.xaml App.xaml Asset1.png Solution 'App1' App1_Phone81 MyData.cs App1_Windows81 MyData.cs MyWebservice MyData.cs Linked files compartilhando código Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs Page1.xaml App.xaml Asset1.png Shared Projects compartilhando código Solution 'App1' App1_Phone81 References App1_PCL App.xaml App1_Windows81 References App1_PCL App.xaml App1_PCL Class1.cs Page1.xaml Asset1.png .NET PCLs compartilhando binários
  • 20. Solution 'App1' App1_Phone81 Class1.cs Page1.xaml App.xaml Asset1.png App1_Windows81 Class1.cs Page1.xaml App.xaml Asset1.png Solution 'App1' App1_Phone81 MyData.cs App1_Windows81 MyData.cs MyWebservice MyData.cs Linked files compartilhando código Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs Page1.xaml App.xaml Asset1.png Shared Projects compartilhando código Solution 'App1' App1_Phone81 References App1_PCL App.xaml App1_Windows81 References App1_PCL App.xaml App1_PCL Class1.cs Page1.xaml Asset1.png .NET PCLs compartilhando binários
  • 21. Solution 'App1' App1_Phone81 Class1.cs Page1.xaml App.xaml Asset1.png App1_Windows81 Class1.cs Page1.xaml App.xaml Asset1.png Solution 'App1' App1_Phone81 MyData.cs App1_Windows81 MyData.cs MyWebservice MyData.cs Linked files compartilhando código Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs Page1.xaml App.xaml Asset1.png Shared Projects compartilhando código Solution 'App1' App1_Phone81 References App1_PCL App.xaml App1_Windows81 References App1_PCL App.xaml App1_PCL Class1.cs Page1.xaml Asset1.png .NET PCLs compartilhando binários
  • 22.
  • 23. Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared/PCL Class1.cs private void OnSuspending(object sender, SuspendingEventArgs e) { // TODO: Save application state and stop any background activity ApplicationData.Current.RoamingSettings.Values["IsBurnt"] = model.IsBurnt; ApplicationData.Current.RoamingSettings.Values["Velocity"] = model.Velocity; } // TODO: Load state from previously suspended application model.IsBurnt = (bool?)ApplicationData.Current.RoamingSettings.Values["IsBurnt"] ?? false; model.Velocity = (double?)ApplicationData.Current.RoamingSettings.Values["Velocity"] ?? 1.0;
  • 24. Dentro do meu código comum, preciso “ajustá-lo” com uma chamada específica de um dispositivo. Como fazer isto?
  • 25. Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs #if block fácil e rápido Solution 'App1' App1_Phone81 References App1_PCL PhoneImpl.cs App1_Windows81 References App1_PCL WinImpl.cs App1_PCL Class1.cs IAbstraction.cs Inversion of Control (IOC) pattern que também funciona com PCL Solution 'App1' App1_Phone81 References App1_Shared ViewModel.cs App1_Windows81 References App1_Shared ViewModel.cs App1_Shared Class1.cs ViewModel.cs Partial classes mais organizado
  • 26. Solution 'App1' App1_Phone81 References App1_Shared ViewModel.cs App1_Windows81 References App1_Shared ViewModel.cs App1_Shared Class1.cs ViewModel.cs Partial classes mais organizado Solution 'App1' App1_Phone81 References App1_PCL PhoneImpl.cs App1_Windows81 References App1_PCL WinImpl.cs App1_PCL Class1.cs IAbstraction.cs Inversion of Control (IOC) pattern que também funciona com PCL Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs #if block fácil e rápido #if WINDOWS_PHONE_APP StatusBar.GetForCurrentView().HideAsync(); Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareBackPressed; #endif #if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP StatusBar::GetForCurrentView()->HideAsync(); #endif
  • 27. // I can provide my own implementation of the missing APIs !!! namespace Windows.UI.ViewManagement { Solution 'App1' public class StatusBar { App1_Phone81 References App1_Shared ViewModel.cs App1_Windows81 References App1_Shared ViewModel.cs App1_Shared Class1.cs ViewModel.cs Partial classes mais organizado Solution 'App1' App1_Phone81 References App1_PCL PhoneImpl.cs App1_Windows81 References App1_PCL WinImpl.cs App1_PCL Class1.cs IAbstraction.cs Inversion of Control (IOC) pattern que também funciona com PCL Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs #if block fácil e rápido #if WINDOWS_PHONE_APP StatusBar.GetForCurrentView().HideAsync(); #endif static StatusBar dummy = new StatusBar(); public static StatusBar GetForCurrentView() { return dummy; } public async Task HideAsync() {} } }
  • 28. Solution 'App1' App1_Phone81 References App1_Shared ViewModel.cs App1_Windows81 References App1_Shared ViewModel.cs App1_Shared Class1.cs ViewModel.cs Partial classes mais organizado // PhoneViewModel.cs public partial class ViewModel { Solution 'App1' App1_Phone81 References App1_PCL PhoneImpl.cs App1_Windows81 References App1_PCL WinImpl.cs App1_PCL Class1.cs IAbstraction.cs Inversion of Control (IOC) pattern que também funciona com PCL Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs #if block fácil e rápido // WindowsViewModel.cs public partial class ViewModel { async Task HideStatusBarAsync() { } } async Task HideStatusBarAsync() { await StatusBar.GetForCurrentView() .HideAsync(); } } // SharedClass1.cs await viewModel.HideStatusBarAsync();
  • 29. // PhonePhoneImpl.cs public class PhonePAL : IPlatformAbstractionLayer { async Task HideStatusBarAsync() { Solution 'App1' await StatusBar.GetForCurrentView() App1_Phone81 .HideAsync(); References App1_Shared ViewModel.cs App1_Windows81 } } // WindowsWinImpl.cs References public class WindowsPAL: IPlatformAbstractionLayer App1_Shared { ViewModel.cs async Task HideStatusBarAsync() { } App1_Shared Class1.cs ViewModel.cs } // Shared public interface IPlatformAbstractionLayer { Task HideStatusBarAsync(); Partial classes mais organizado Solution 'App1' App1_Phone81 References App1_PCL PhoneImpl.cs App1_Windows81 References App1_PCL WinImpl.cs App1_PCL Class1.cs IAbstraction.cs Inversion of Control (IOC) pattern que também funciona com PCL Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs #if block } fácil e rápido await pal.HideStatusBarAsync();
  • 30. Solution 'App1' App1_Phone81 References App1_Shared App1_Windows81 References App1_Shared App1_Shared Class1.cs #if block fácil e rápido Solution 'App1' App1_Phone81 References App1_PCL PhoneImpl.cs App1_Windows81 References App1_PCL WinImpl.cs App1_PCL Class1.cs IAbstraction.cs Inversion of Control (IOC) pattern que também funciona com PCL Solution 'App1' App1_Phone81 References App1_Shared ViewModel.cs App1_Windows81 References App1_Shared ViewModel.cs App1_Shared Class1.cs ViewModel.cs Partial classes mais organizado
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.      
  • 38.
  • 39.         
  • 40.
  • 41. <Page.BottomAppBar> <CommandBar> <AppBarButton Icon="Accept" Label="Accept" /> <AppBarButton Icon="Cancel" Label="Cancel" /> <CommandBar.SecondaryCommands> <AppBarButton x:Uid="AboutAppBarButton" Icon="Help" /> <AppBarButton x:Uid="HomeAppBarButton" Icon="Home" /> </CommandBar.SecondaryCommands> </CommandBar> </Page.BottomAppBar>
  • 42.
  • 43.                