SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Windows Bridge
Porta il tuo codice in Windows
indipendentemente dalla destinazione per cui era pensato.
“Chi si ferma è perduto!” (cit.)
Sponsor
Grazie a
PATERNO’ GAETANO
Mail: tanopaterno@gmail.com
Facebook: gaetano.paterno.77
Con Windows 8, Microsoft ha
introdotto Windows Runtime
(WinRT), un'evoluzione dell’app
model di Windows, che doveva
essere un'architettura applicativa
comune, ma non lo è stato del
tutto.
Al rilascio di Windows Phone 8.1 è
stato effettuato l'allineamento di
Windows Runtime tra Windows
Phone 8.1 e Windows.
Gli sviluppatori hanno quindi
potuto creare app universali di
Windows 8 destinate sia a
Windows che a Windows Phone
con una base di codice condivisa.
Windows 10 introduce la piattaforma UWP (Universal Windows Platform), che evolve
ulteriormente il modello di Windows Runtime e lo integra in Windows 10.
Essendo parte integrante di Windows 10, UWP offre ora una piattaforma per app
comune, disponibile su tutti i dispositivi che lo eseguono.
Grazie a questa evoluzione, le app destinate alla piattaforma UWP possono chiamare
non solo le API WinRT comuni per tutti i dispositivi, ma anche le API specifiche, incluse
le API Win32 e .NET, della famiglia di dispositivi in cui viene eseguita l'app.
La piattaforma UWP offre un livello di
API di base garantito su tutti i
dispositivi.
I controlli dell'interfaccia utente
adattivi e i nuovi pannelli di layout
introdotti in UWP, aiutano a
personalizzare l’interfaccia utente per
un'ampia gamma di risoluzioni dello
schermo.
Inoltre, con un singolo pacchetto
dell'app, Windows Store offre un
canale di distribuzione unificato per
raggiungere ogni tipo di dispositivo su
cui può essere eseguita l’app.
Porta il tuo codice in Windows
indipendentemente dalla destinazione
per cui era pensato il tuo codice.
WEB
Per i siti Web o le app Web, è
possibile usare Visual Studio 2015
per creare facilmente un'app di
Windows 10 che raccoglie in un
pacchetto il tuo sito Web o la tua
app Web per la pubblicazione in
Windows Store. Questo tipo di
app, nota come Hosted Web App,
può essere usata per chiamare le
API UWP direttamente dal codice
JavaScript del tuo sito Web e
creare un'esperienza utente più
coinvolgente.
WINDOWS
Se hai un'app in Silverlight per
Windows Phone, è possibile usare
il bridge Silverlight di
Mobilize.Net per trasferirla sulla
piattaforma UWP. Questo bridge è
attualmente disponibile come
anteprima per gli sviluppatori e
offre un subset iniziale dei mapping
di piattaforma per Silverlight e UWP.
Se hai un'applicazione .NET o basata
su Win32, "Project Centennial"
renderà possibili la creazione di un
pacchetto per l'applicazione e la
pubblicazione in Windows Store.
ANDROID
Se hai un'app per Android, puoi
usare il bridge Android per
renderla disponibile per i
dispositivi Windows 10 Mobile
usando le estensioni per
Android SDK e vari ambienti IDE
noti per Android. Per la maggior
parte delle app sono necessarie
poche modifiche al codice, se
non nessuna.
iOS
Se hai un'app per iOS, puoi
usare il bridge iOS per creare
una versione UWP della tua app
con Visual Studio 2015 e il
codice Objective-C esistente.
Puoi estendere il codice
esistente con le funzionalità
native di Windows, in base alle
tue esigenze.
Per i siti Web o le app Web, puoi usare Visual Studio 2015 per creare facilmente un'app di
Windows 10 che raccoglie in un pacchetto il tuo sito Web o la tua Web App per la
pubblicazione in Windows Store. Questo tipo di app, nota come Hosted Web Apps, può
essere usata per chiamare le API UWP direttamente dal codice JavaScript del tuo sito Web e
creare un'esperienza utente più coinvolgente.
Hosted Web Apps
Attraverso ACURs si è in grado di dare agli URL remoti
un accesso diretto alle API di Windows Universal da
HTML, CSS e JavaScript. È possibile definire nel
pacchetto app manifest l'insieme delle URL che
compongono la Hosted Web Apps, definendo, per
ognuna, il livello di accesso alle API della piattaforma.
Le regole dovrebbero includere la pagina iniziale del
vostro app e le altre pagine che si desidera includere
come pagine app. Opzionalmente, è anche possibile
escludere URL specifici.
SECURITY
Mantenere la vostra applicazione sicura con
ACURs (Setting Application Content URI Rules)
Hosted Web Apps
Ci sono diversi modi di specificare gli URL nelle regole:
• Un hostname esatto.
• Un nome host per il quale una URI, con qualsiasi
sottodominio di quel nome host, è inclusa o esclusa.
• Un URI esatto.
• Un URI esatto che contenere dei parametri.
• Un percorso parziale e un jolly per indicare una
particolare estensione di file per una regola da includere.
• I percorsi relativi per escludere le regole.
Se l'utente passa a un URL che non è incluso nelle regole,
quindi Windows apre l'URL di destinazione in un browser.
SECURITY
Mantenere la vostra applicazione sicura con
ACURs
Hosted Web Apps
Mantenere la vostra applicazione sicura con
ACURs
Ecco alcuni esempi di ACURs.
javascript StartPage="http://contoso.com/home">
<uap:ApplicationContentUriRules>
<uap:Rule Type="include" Match="https://contoso.com/"
WindowsRuntimeAccess="all" />
<uap:Rule Type="include" Match="https://*.contoso.com/"
WindowsRuntimeAccess="all" />
<uap:Rule Type="exclude"
Match="https://contoso.com/excludethispage.aspx" />
</uap:ApplicationContentUriRules>
SECURITY
Hosted Web Apps
Se un URL è definito entro i limiti dell’app (ACURs), può
chiamare le Windows Runtime API con JavaScript
utilizzando l'attributo "WindowsRuntimeAccess".
Lo spazio dei nomi di Windows verrà così iniettato e sarà
presente nel motore di script quando un URL, con
accesso appropriato, viene caricato nell’Hosted Web App.
Questo rende le Universal Windows API direttamente
disponibili per gli script dell’app.
SECURITY
Mantenere la vostra applicazione sicura con
ACURs
Hosted Web Apps
Mantenere la vostra applicazione sicura con
ACURs
A tal fine è necessario specificare per ogni URL il
(WindowsRuntimeAccess="<<level>>”), nei ACURs, con uno di
questi valori:
• all: il codice JavaScript remoto ha accesso a tutte le API UWP e
alle risorse incluse nel pacchetto.
• allowForWeb: il codice JavaScript remoto ha accesso soltanto
alle risorse incluse nel pacchetto.
• none: Default. L'URL specificato non ha accesso alla
piattaforma.
SECURITY
Hosted Web Apps
Ecco un esempio di limiti:
javascript
<uap:ApplicationContentUriRules>
<uap:Rule Type="include" Match="http://contoso.com/"
WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules>
SECURITY
Mantenere la vostra applicazione sicura con
ACURs
Hosted Web Apps
Crea ora la tua applicazione
Creare una
Blank App Javascipt
- Lanciare Visual Studio 2015
- Cliccare su “File -> New Project”
e sekezionare “JavaScript ->
Windows -> Windows Universal -
> Blank App (Windows
Universal)”
Hosted Web Apps
Crea ora la tua applicazione
Cancellare i contenuti HTML/CSS/JS
- Poiché si tratta di una applicazione web in cui il
contenuto viene servito da un server remoto, non
saranno necessari la maggior parte dei file delle
applicazioni locali che vengono forniti dal template
JavaScript.
- Cancellare le risorse HTML, JS e CSS.
Tutto ciò che serve per l’app è il package manifest
(dove si configura la app) e le risorse images.
Hosted Web Apps
Crea ora la tua applicazione
Impostare l’URL della pagina
iniziale URL nel package
manifest
- Aprire il file package.appxmanifest
- Sotto la scheda Applicazione
trovare il campo StartPage
- Sostituire "default.html" con
http://codepen.io/seksenov/pen/wB
bVyb/?editors=101
Hosted Web Apps
Crea ora la tua applicazione
Definire i limiti della vostra Web App
- Nella scheda Content URIs definire le URL che
compongono il web app.
- Aggiungere le URI:
http://codepen.io/seksenov/pen/wBbVyb/?editors=
101
http: //*.codepen.io/
- Impostare il WinRT Access a ALL per entrambi gli
URL
Hosted Web Apps
DEMO
Hosted Web Apps
Integrare i comandi vocali di Cortana
È possibile usufruire di Cortana specificando un file
Voice Command Definition (VCD) nella pagina html.
Il file VCD è un file XML che mappa i comandi di frasi
specifiche, per esempio, un utente potrebbe toccare il
pulsante Start e dire “Mio calendario, mostra
appuntamenti di oggi” sia per lanciare l'applicazione
MioCalendario e per passare alla pagina con gli
appuntamenti del giorno.
Aggiungere un tag <meta> nell’<head> della pagina html.
Quando si aggiunge un tag <meta> che elenca il percorso
del file VCD, Windows lo scarica e lo registra
automaticamente.
Ecco un esempio dell'uso del tag in una pagina html:
<meta name="msapplication-cortanavcd"
content="http://contoso.com/vcd.xml"/>
Hosted Web Apps
Integrare i comandi vocali di Cortana
Hosted Web Apps
Integrare i comandi vocali di Cortana
Oltre a utilizzare i comandi vocali in Cortana per
accedere alle funzioni di sistema, è anche possibile
estendere Cortana con caratteristiche e funzionalità di
una applicazione in background, utilizzando i comandi
vocali che specificano un'azione o un comando da
eseguire all'interno della app.
Quando un'applicazione gestisce un comando vocale in
background è possibile visualizzare un feedback sulla
finestra di Cortana e comunicare con l'utente
utilizzando la voce di Cortana.
Ad esempio, possiamo aggiungere un’appuntamento
nella nostra app MioCalendario, comunicando
vocalmente i dati da inserire a Cortana.
Hosted Web Apps Prepariamo il file VCD
Ecco un file VCD che definisce un comando vocale per l'applicazione MioCalendario.
<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2”>
<CommandSet xml:lang=“it-IT” Name=“MioCalendarioCommandSet_it-IT“>
<CommandPrefix> Mio calendario, </CommandPrefix>
<Example> mostra appuntamenti di oggi </Example>
<Command Name=“visualizzaCalendario”>
<Example> mostra appuntamenti di oggi </Example>
<ListenFor> mostra appuntamenti {giornate} </ListenFor>
<Feedback> Sto mostrando gli appuntamenti {giornate} </Feedback>
<Navigate/>
</Command>
<PhraseList Label=“giornate”>
<Item> di oggi </Item>
<Item> di domani </Item>
<Item> della settimana </Item>
<Item> del mese </Item>
</PhraseList>
</CommandSet></VoiceCommands>
Hosted Web Apps Prepariamo il file VCD
Come per qualsiasi file XML, anche un file VCD segue le
linee guida di riferimento, per gli elementi di markup
XML e gli attributi utilizzati nei file VCD, per specificare
i vincoli di riconoscimento.
Per approfondimenti sul “Voice Command Definition
(VCD) elements and attributes v1.2” vitiate il sito
https://msdn.microsoft.com/en-
us/library/windows/apps/dn954977.aspx.
Dinamicamente la modifica di una lista frasi, in fase di
esecuzione, può essere utile se il comando vocale è specifico
per un compito che coinvolge una sorta di preferiti definiti
dall'utente o dati transitori nell’app.
Ad esempio, nell’applicazione MioCalendario l’utente
inserirà i propri appuntamenti, e si desidera che sia in grado
di avviare l'applicazione pronunciando il nome app seguito
da "Mostra appuntamento <meta>".
Non è necessario creare un elemento ListenFor separato per
ogni possibile appuntamento. Invece, è possibile popolare
dinamicamente PhraseList in fase di esecuzione, magari, con
il titolo dell’appuntamento creato dall'utente.
Hosted Web Apps Prepariamo il file VCD
Nel file javascript, specificare il codice da eseguire all’attivazioni dei comandi vocali.
Ad esempio, l’applicazione MioCalendario potrebbe passare a una pagina specifica e
visualizzare gli appuntamenti secondo il giorno richiesto.
if (typeof Windows !== 'undefined' && typeof Windows.UI !== 'undefined' &&
typeof Windows.ApplicationModel !== 'undefined')
{
Windows.UI.WebUI.WebUIApplication.addEventListener("activated", function (args) {
var activation = Windows.ApplicationModel.Activation;
if (args.kind === activation.ActivationKind.voiceCommand) {
var speechRecognitionResult = args.result;
var textSpoken = speechRecognitionResult.text;
if (speechRecognitionResult.rulePath[0] === "mostra appuntamenti di oggi”)
console.log("mostra appuntamenti di oggi");
else {
console.log("No valid command specified");
});
}
Hosted Web Apps Il codice javascript
Hosted Web Apps
DEMO
Problemi o quesiti?
Visitate i siti:
- http://microsoftedge.github.io/WebAppsDocs/
en-US/win10/HWA.htm
- https://microsoftedge.github.io/WebAppsDocs/
en-US/win10/CreateHWA.htm
- http://microsoftedge.github.io/WebAppsDocs/
en-US/win10/HWAfeatures.htm
Hosted Web Apps
In questa sessione andremo a vedere un po' più approfonditamente ciò che è
Windows Bridge for iOS
(precedentemente denominato 'Progetto Islandwood'), come consente agli sviluppatori
iOS di portare le loro competenze e il codice Objctive-C per Windows e perché Microsoft
a deciso di dare questo particolare bridge di Windows disponibile come open-source su
GitHub.
Windows Bridge for iOS e’
stato rilasciato su GitHub
in concomitanza con
l’evento Build 2015 nel
mese di aprile.
Windows Bridge for iOS è concepito per consentire agli sviluppatori iOS di creare
applicazioni Windows utilizzando il codice esistente in Objective-C e le sue
competenze. A tale scopo, questo bridge è costituito da quattro componenti:
Objective-C compiler
un compilatore incluso in
Visual Studio che prende
il codice Objective-C e l’ho
compila in una Windows
Universal App nativa.
Objective-C runtime
per fornire funzionalità
avanzate al linguaggio.
iOS API headers/libs
sulla base delle API di
Objective-C, vengono
fornite delle API che
danno un’ampia
compatibilità
con le API iOS.
Visual Studio IDE
Integration
infine viene fornito
un tool che importa
il progetto Xcode in
Visual Studio 2015.
Why the bridge is not a
port
L’obiettivo del bridge per iOS non è mai
stato semplicemente quello di eseguire
applicazioni iOS su Windows.
Piuttosto l’obiettivo è aiutare a scrivere
grandi applicazioni Windows che
utilizzano non molto di piu’ del vostro
codice già esistente e tutta la
conoscenza dello sviluppatore.
Naturalmente, stanno continuando a
lavorare per ampliare la compatibilità
con iOS.
Dietro questo obiettivo ci sono tre principi fondamentali che hanno
guidato l'architettura e il design del bridge per iOS:
Accesso completo
alle Windows API
rende facile utilizzo
delle Windows API
all'interno di codice
Objective-C.
compatibilità iOS
permettete agli
sviluppatori di
riutilizzare al massimo
il codice esistente
fin dove possibile.
Nessun sandboxing
iOS e le API di
Windows devono
essere in grado
di lavorare insieme.
Il primo e il terzo principio sono
collegati e particolarmente
importanti.
Il primo principio perché Windows
ha un set di API completamente
funzionale e ricco, che continua a
crescere ed evolversi.
Il terzo perché avere la possibilità di
chiamare e utilizzare interamente le
API di Windows sarebbe
severamente limitata se il set di API
sarebbero in modalità sandbox uno
da altro, limitando la capacità di
compilare buone applicazioni
Windows in Objective-C.
Quando le API Windows
e Objective-C si
incontrano
Il bridge utilizza un compilatore
personalizzato (clang + cl) per
compilare codice sorgente Objective-
C, e i file oggetti generati sono poi
collegati insieme utilizzando il linker di
Microsoft.
Questo approccio è ottimo perché
permette a Objective-C e C++/CX di
poter coesistere nello stesso progetto
e chiamarsi tra loro utilizzando le
interfacce di C o C++.
Ad esempio, esaminiamo come è possibile richiamare in modo
asincrono un browser nella vs app utilizzando il bridge:
1
auto uri = ref new
Windows::Foundation::Uri("http://www.example.com");
2
concurrency::task<bool> launchUriOperation
(Windows::System::Launcher::LaunchUriAsync(uri));
3 launchUriOperation.then([](bool success)
4 {
5 if (success)
6 {
7 // URI launched
8 }
9 else
10 {
11 // URI launch failed
12 }
13 });
Opzione 1 (invocando il browser dal codice c++/cx):
Opzione 2 (invocando la stessa API dal codice Objective-C):
[WSLauncher launchUriAsync:[WFUri
createUri:@“http://www.example.com/”] success:nil failure:nil];
XAML e UIKit: insieme
all'unisono
Ora che è possibile chiamare le API di
Windows da Objective-C, per non
limitare l'utilizzo di tale set di
API, invece di implementare un
compositor separato per gli elementi
iOS/UIKit, l'intera applicazione utilizza
il compositor XAML, con CALayers
(che sono alla base essenzialmente di
ogni vista in iOS) legato agli elementi
XAML corrispondenti.
Windows Bridge for iOS
DEMO
Perché
Windows Bridge for iOS
è disponibile su GitHub
Microsoft ha messo a disposizione su
GitHub tutti i sorgenti del framework e
dei tools per permettere agli sviluppatori
di contribuire in tanti modi al progetto
WinObjC, come?
- Segnalando un bug
- Verificando la correzione dei bug
- Inviando codice per la correzione di un bug
- Inviando una richiesta di funzionalità
- Inviando una prova di funzionalità
- Dire agli altri sul progetto WinObjC
- Dire gli sviluppatori quanto apprezzi il progetto
Wiki
Su GitHub è disponibile anche una pagina Wiki
che guida passo-passo su come scaricare,
installare e usare l’sdk ed il tool vsimporter.
Il tool vsimporter consente di importare il
progetto Xcode in una nuova soluzione UWP,
con supporto ad Objective-C, per Windows 10.
Se si vuole una soluzione per Windows 8.1,
utilizzare l'opzione -format e specificare uno
dei target: winstore8.1, winphone8.1 o
winstore10 (winstore10 è il predefinito).
Per ulteriori informazioni utilizzare l'opzione -
help nella riga di comando per vedere la serie
completa di opzioni supportate.
Problemi o quesiti?
Potete raggiungere il team di sviluppo in vari modi:
- Tweeter @WindowsDev e segnare le
domande con #winobjc
- Inviare domande sui post di StackOverflow
con il tag winobjc
- Visitare il canale #winobjc su IRC
(webchat.freenode.net)
Visitate i siti:
- https://dev.windows.com/it-it/bridges
- https://dev.windows.com/it-it/bridges/ios
- https://github.com/Microsoft/WinObjC
- https://github.com/Microsoft/WinObjC/wiki
Windows Bridge for iOS

Más contenido relacionado

La actualidad más candente

01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
Ecco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App AndroidEcco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App AndroidFlavius-Florin Harabor
 
Developing Adobe AIR desktop applications
Developing Adobe AIR desktop applicationsDeveloping Adobe AIR desktop applications
Developing Adobe AIR desktop applicationsmarcocasario
 
WordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezzaWordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezzaFlavius-Florin Harabor
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)Vinu Iaconissi
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca mezzalira
 
DotNetCampus 2014 - BING e Windows Store App
DotNetCampus 2014 - BING e Windows Store AppDotNetCampus 2014 - BING e Windows Store App
DotNetCampus 2014 - BING e Windows Store AppMassimo Bonanni
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceAntonio Musarra
 
Win02 bing e windows store apps
Win02   bing e windows store appsWin02   bing e windows store apps
Win02 bing e windows store appsDotNetCampus
 
Degree Dissertation
Degree DissertationDegree Dissertation
Degree Dissertationbbg5ne
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriAlessandro Nadalin
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewFrancesco Sciuti
 
Plugin #MustHave | Mafaldida
Plugin #MustHave | MafaldidaPlugin #MustHave | Mafaldida
Plugin #MustHave | MafaldidaGiulia Costa
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular OverviewFrancesco Sciuti
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomAntonio Musarra
 

La actualidad más candente (19)

01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
Ecco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App AndroidEcco gli strumenti necessari per sviluppare la tua App Android
Ecco gli strumenti necessari per sviluppare la tua App Android
 
Developing Adobe AIR desktop applications
Developing Adobe AIR desktop applicationsDeveloping Adobe AIR desktop applications
Developing Adobe AIR desktop applications
 
WordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezzaWordPress Facilissimo: guida alla sicurezza
WordPress Facilissimo: guida alla sicurezza
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
DotNetCampus 2014 - BING e Windows Store App
DotNetCampus 2014 - BING e Windows Store AppDotNetCampus 2014 - BING e Windows Store App
DotNetCampus 2014 - BING e Windows Store App
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual Appliance
 
Win02 bing e windows store apps
Win02   bing e windows store appsWin02   bing e windows store apps
Win02 bing e windows store apps
 
Degree Dissertation
Degree DissertationDegree Dissertation
Degree Dissertation
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code Overview
 
Google chrome
Google chromeGoogle chrome
Google chrome
 
Plugin #MustHave | Mafaldida
Plugin #MustHave | MafaldidaPlugin #MustHave | Mafaldida
Plugin #MustHave | Mafaldida
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular Overview
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 

Destacado

ASP.NET MVC 2.0
ASP.NET MVC 2.0ASP.NET MVC 2.0
ASP.NET MVC 2.0XeDotNet
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Andrea Dottor
 
What's new in ASP.NET 4.0
What's new in ASP.NET 4.0What's new in ASP.NET 4.0
What's new in ASP.NET 4.0XeDotNet
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Massimo Bonanni
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
More Little Wonders of C#/.NET
More Little Wonders of C#/.NETMore Little Wonders of C#/.NET
More Little Wonders of C#/.NETBlackRabbitCoder
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NETPeter Gfader
 

Destacado (9)

ASP.NET MVC 2.0
ASP.NET MVC 2.0ASP.NET MVC 2.0
ASP.NET MVC 2.0
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5
 
What's new in ASP.NET 4.0
What's new in ASP.NET 4.0What's new in ASP.NET 4.0
What's new in ASP.NET 4.0
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
More Little Wonders of C#/.NET
More Little Wonders of C#/.NETMore Little Wonders of C#/.NET
More Little Wonders of C#/.NET
 
Of Lambdas and LINQ
Of Lambdas and LINQOf Lambdas and LINQ
Of Lambdas and LINQ
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NET
 

Similar a EtnaDev 2015 - Windows Bridge

Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiFondazione Mondo Digitale
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugianifirenze-gtug
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteNicolò Carandini
 
Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1CSP Scarl
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016Gaetano Paternò
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di GoogleMssiStf
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMSRoberto Polillo
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...Marco Parenzan
 

Similar a EtnaDev 2015 - Windows Bridge (20)

Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile Cordova
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMS
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 

Más de Gaetano Paternò

Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Gaetano Paternò
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016Gaetano Paternò
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016Gaetano Paternò
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Gaetano Paternò
 
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Gaetano Paternò
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetUnofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetGaetano Paternò
 

Más de Gaetano Paternò (8)

Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016
 
EtnaDev 2016 - 21/10/2016
EtnaDev 2016 - 21/10/2016EtnaDev 2016 - 21/10/2016
EtnaDev 2016 - 21/10/2016
 
Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016Google IO Catania - 20/05/2016
Google IO Catania - 20/05/2016
 
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
 
Hour of Code - 13/01/2016
Hour of Code - 13/01/2016Hour of Code - 13/01/2016
Hour of Code - 13/01/2016
 
Unofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNetUnofficial Xamarin Day DomusDotNet
Unofficial Xamarin Day DomusDotNet
 

EtnaDev 2015 - Windows Bridge

  • 1. Windows Bridge Porta il tuo codice in Windows indipendentemente dalla destinazione per cui era pensato. “Chi si ferma è perduto!” (cit.)
  • 4. Con Windows 8, Microsoft ha introdotto Windows Runtime (WinRT), un'evoluzione dell’app model di Windows, che doveva essere un'architettura applicativa comune, ma non lo è stato del tutto. Al rilascio di Windows Phone 8.1 è stato effettuato l'allineamento di Windows Runtime tra Windows Phone 8.1 e Windows. Gli sviluppatori hanno quindi potuto creare app universali di Windows 8 destinate sia a Windows che a Windows Phone con una base di codice condivisa.
  • 5. Windows 10 introduce la piattaforma UWP (Universal Windows Platform), che evolve ulteriormente il modello di Windows Runtime e lo integra in Windows 10. Essendo parte integrante di Windows 10, UWP offre ora una piattaforma per app comune, disponibile su tutti i dispositivi che lo eseguono. Grazie a questa evoluzione, le app destinate alla piattaforma UWP possono chiamare non solo le API WinRT comuni per tutti i dispositivi, ma anche le API specifiche, incluse le API Win32 e .NET, della famiglia di dispositivi in cui viene eseguita l'app.
  • 6. La piattaforma UWP offre un livello di API di base garantito su tutti i dispositivi. I controlli dell'interfaccia utente adattivi e i nuovi pannelli di layout introdotti in UWP, aiutano a personalizzare l’interfaccia utente per un'ampia gamma di risoluzioni dello schermo. Inoltre, con un singolo pacchetto dell'app, Windows Store offre un canale di distribuzione unificato per raggiungere ogni tipo di dispositivo su cui può essere eseguita l’app.
  • 7. Porta il tuo codice in Windows indipendentemente dalla destinazione per cui era pensato il tuo codice.
  • 8. WEB Per i siti Web o le app Web, è possibile usare Visual Studio 2015 per creare facilmente un'app di Windows 10 che raccoglie in un pacchetto il tuo sito Web o la tua app Web per la pubblicazione in Windows Store. Questo tipo di app, nota come Hosted Web App, può essere usata per chiamare le API UWP direttamente dal codice JavaScript del tuo sito Web e creare un'esperienza utente più coinvolgente.
  • 9. WINDOWS Se hai un'app in Silverlight per Windows Phone, è possibile usare il bridge Silverlight di Mobilize.Net per trasferirla sulla piattaforma UWP. Questo bridge è attualmente disponibile come anteprima per gli sviluppatori e offre un subset iniziale dei mapping di piattaforma per Silverlight e UWP. Se hai un'applicazione .NET o basata su Win32, "Project Centennial" renderà possibili la creazione di un pacchetto per l'applicazione e la pubblicazione in Windows Store.
  • 10. ANDROID Se hai un'app per Android, puoi usare il bridge Android per renderla disponibile per i dispositivi Windows 10 Mobile usando le estensioni per Android SDK e vari ambienti IDE noti per Android. Per la maggior parte delle app sono necessarie poche modifiche al codice, se non nessuna.
  • 11. iOS Se hai un'app per iOS, puoi usare il bridge iOS per creare una versione UWP della tua app con Visual Studio 2015 e il codice Objective-C esistente. Puoi estendere il codice esistente con le funzionalità native di Windows, in base alle tue esigenze.
  • 12. Per i siti Web o le app Web, puoi usare Visual Studio 2015 per creare facilmente un'app di Windows 10 che raccoglie in un pacchetto il tuo sito Web o la tua Web App per la pubblicazione in Windows Store. Questo tipo di app, nota come Hosted Web Apps, può essere usata per chiamare le API UWP direttamente dal codice JavaScript del tuo sito Web e creare un'esperienza utente più coinvolgente.
  • 13. Hosted Web Apps Attraverso ACURs si è in grado di dare agli URL remoti un accesso diretto alle API di Windows Universal da HTML, CSS e JavaScript. È possibile definire nel pacchetto app manifest l'insieme delle URL che compongono la Hosted Web Apps, definendo, per ognuna, il livello di accesso alle API della piattaforma. Le regole dovrebbero includere la pagina iniziale del vostro app e le altre pagine che si desidera includere come pagine app. Opzionalmente, è anche possibile escludere URL specifici. SECURITY Mantenere la vostra applicazione sicura con ACURs (Setting Application Content URI Rules)
  • 14. Hosted Web Apps Ci sono diversi modi di specificare gli URL nelle regole: • Un hostname esatto. • Un nome host per il quale una URI, con qualsiasi sottodominio di quel nome host, è inclusa o esclusa. • Un URI esatto. • Un URI esatto che contenere dei parametri. • Un percorso parziale e un jolly per indicare una particolare estensione di file per una regola da includere. • I percorsi relativi per escludere le regole. Se l'utente passa a un URL che non è incluso nelle regole, quindi Windows apre l'URL di destinazione in un browser. SECURITY Mantenere la vostra applicazione sicura con ACURs
  • 15. Hosted Web Apps Mantenere la vostra applicazione sicura con ACURs Ecco alcuni esempi di ACURs. javascript StartPage="http://contoso.com/home"> <uap:ApplicationContentUriRules> <uap:Rule Type="include" Match="https://contoso.com/" WindowsRuntimeAccess="all" /> <uap:Rule Type="include" Match="https://*.contoso.com/" WindowsRuntimeAccess="all" /> <uap:Rule Type="exclude" Match="https://contoso.com/excludethispage.aspx" /> </uap:ApplicationContentUriRules> SECURITY
  • 16. Hosted Web Apps Se un URL è definito entro i limiti dell’app (ACURs), può chiamare le Windows Runtime API con JavaScript utilizzando l'attributo "WindowsRuntimeAccess". Lo spazio dei nomi di Windows verrà così iniettato e sarà presente nel motore di script quando un URL, con accesso appropriato, viene caricato nell’Hosted Web App. Questo rende le Universal Windows API direttamente disponibili per gli script dell’app. SECURITY Mantenere la vostra applicazione sicura con ACURs
  • 17. Hosted Web Apps Mantenere la vostra applicazione sicura con ACURs A tal fine è necessario specificare per ogni URL il (WindowsRuntimeAccess="<<level>>”), nei ACURs, con uno di questi valori: • all: il codice JavaScript remoto ha accesso a tutte le API UWP e alle risorse incluse nel pacchetto. • allowForWeb: il codice JavaScript remoto ha accesso soltanto alle risorse incluse nel pacchetto. • none: Default. L'URL specificato non ha accesso alla piattaforma. SECURITY
  • 18. Hosted Web Apps Ecco un esempio di limiti: javascript <uap:ApplicationContentUriRules> <uap:Rule Type="include" Match="http://contoso.com/" WindowsRuntimeAccess="all" /> </uap:ApplicationContentUriRules> SECURITY Mantenere la vostra applicazione sicura con ACURs
  • 19. Hosted Web Apps Crea ora la tua applicazione Creare una Blank App Javascipt - Lanciare Visual Studio 2015 - Cliccare su “File -> New Project” e sekezionare “JavaScript -> Windows -> Windows Universal - > Blank App (Windows Universal)”
  • 20. Hosted Web Apps Crea ora la tua applicazione Cancellare i contenuti HTML/CSS/JS - Poiché si tratta di una applicazione web in cui il contenuto viene servito da un server remoto, non saranno necessari la maggior parte dei file delle applicazioni locali che vengono forniti dal template JavaScript. - Cancellare le risorse HTML, JS e CSS. Tutto ciò che serve per l’app è il package manifest (dove si configura la app) e le risorse images.
  • 21. Hosted Web Apps Crea ora la tua applicazione Impostare l’URL della pagina iniziale URL nel package manifest - Aprire il file package.appxmanifest - Sotto la scheda Applicazione trovare il campo StartPage - Sostituire "default.html" con http://codepen.io/seksenov/pen/wB bVyb/?editors=101
  • 22. Hosted Web Apps Crea ora la tua applicazione Definire i limiti della vostra Web App - Nella scheda Content URIs definire le URL che compongono il web app. - Aggiungere le URI: http://codepen.io/seksenov/pen/wBbVyb/?editors= 101 http: //*.codepen.io/ - Impostare il WinRT Access a ALL per entrambi gli URL
  • 24. Hosted Web Apps Integrare i comandi vocali di Cortana È possibile usufruire di Cortana specificando un file Voice Command Definition (VCD) nella pagina html. Il file VCD è un file XML che mappa i comandi di frasi specifiche, per esempio, un utente potrebbe toccare il pulsante Start e dire “Mio calendario, mostra appuntamenti di oggi” sia per lanciare l'applicazione MioCalendario e per passare alla pagina con gli appuntamenti del giorno.
  • 25. Aggiungere un tag <meta> nell’<head> della pagina html. Quando si aggiunge un tag <meta> che elenca il percorso del file VCD, Windows lo scarica e lo registra automaticamente. Ecco un esempio dell'uso del tag in una pagina html: <meta name="msapplication-cortanavcd" content="http://contoso.com/vcd.xml"/> Hosted Web Apps Integrare i comandi vocali di Cortana
  • 26. Hosted Web Apps Integrare i comandi vocali di Cortana Oltre a utilizzare i comandi vocali in Cortana per accedere alle funzioni di sistema, è anche possibile estendere Cortana con caratteristiche e funzionalità di una applicazione in background, utilizzando i comandi vocali che specificano un'azione o un comando da eseguire all'interno della app. Quando un'applicazione gestisce un comando vocale in background è possibile visualizzare un feedback sulla finestra di Cortana e comunicare con l'utente utilizzando la voce di Cortana. Ad esempio, possiamo aggiungere un’appuntamento nella nostra app MioCalendario, comunicando vocalmente i dati da inserire a Cortana.
  • 27. Hosted Web Apps Prepariamo il file VCD Ecco un file VCD che definisce un comando vocale per l'applicazione MioCalendario. <?xml version="1.0" encoding="utf-8"?> <VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2”> <CommandSet xml:lang=“it-IT” Name=“MioCalendarioCommandSet_it-IT“> <CommandPrefix> Mio calendario, </CommandPrefix> <Example> mostra appuntamenti di oggi </Example> <Command Name=“visualizzaCalendario”> <Example> mostra appuntamenti di oggi </Example> <ListenFor> mostra appuntamenti {giornate} </ListenFor> <Feedback> Sto mostrando gli appuntamenti {giornate} </Feedback> <Navigate/> </Command> <PhraseList Label=“giornate”> <Item> di oggi </Item> <Item> di domani </Item> <Item> della settimana </Item> <Item> del mese </Item> </PhraseList> </CommandSet></VoiceCommands>
  • 28. Hosted Web Apps Prepariamo il file VCD Come per qualsiasi file XML, anche un file VCD segue le linee guida di riferimento, per gli elementi di markup XML e gli attributi utilizzati nei file VCD, per specificare i vincoli di riconoscimento. Per approfondimenti sul “Voice Command Definition (VCD) elements and attributes v1.2” vitiate il sito https://msdn.microsoft.com/en- us/library/windows/apps/dn954977.aspx.
  • 29. Dinamicamente la modifica di una lista frasi, in fase di esecuzione, può essere utile se il comando vocale è specifico per un compito che coinvolge una sorta di preferiti definiti dall'utente o dati transitori nell’app. Ad esempio, nell’applicazione MioCalendario l’utente inserirà i propri appuntamenti, e si desidera che sia in grado di avviare l'applicazione pronunciando il nome app seguito da "Mostra appuntamento <meta>". Non è necessario creare un elemento ListenFor separato per ogni possibile appuntamento. Invece, è possibile popolare dinamicamente PhraseList in fase di esecuzione, magari, con il titolo dell’appuntamento creato dall'utente. Hosted Web Apps Prepariamo il file VCD
  • 30. Nel file javascript, specificare il codice da eseguire all’attivazioni dei comandi vocali. Ad esempio, l’applicazione MioCalendario potrebbe passare a una pagina specifica e visualizzare gli appuntamenti secondo il giorno richiesto. if (typeof Windows !== 'undefined' && typeof Windows.UI !== 'undefined' && typeof Windows.ApplicationModel !== 'undefined') { Windows.UI.WebUI.WebUIApplication.addEventListener("activated", function (args) { var activation = Windows.ApplicationModel.Activation; if (args.kind === activation.ActivationKind.voiceCommand) { var speechRecognitionResult = args.result; var textSpoken = speechRecognitionResult.text; if (speechRecognitionResult.rulePath[0] === "mostra appuntamenti di oggi”) console.log("mostra appuntamenti di oggi"); else { console.log("No valid command specified"); }); } Hosted Web Apps Il codice javascript
  • 32. Problemi o quesiti? Visitate i siti: - http://microsoftedge.github.io/WebAppsDocs/ en-US/win10/HWA.htm - https://microsoftedge.github.io/WebAppsDocs/ en-US/win10/CreateHWA.htm - http://microsoftedge.github.io/WebAppsDocs/ en-US/win10/HWAfeatures.htm Hosted Web Apps
  • 33. In questa sessione andremo a vedere un po' più approfonditamente ciò che è Windows Bridge for iOS (precedentemente denominato 'Progetto Islandwood'), come consente agli sviluppatori iOS di portare le loro competenze e il codice Objctive-C per Windows e perché Microsoft a deciso di dare questo particolare bridge di Windows disponibile come open-source su GitHub.
  • 34. Windows Bridge for iOS e’ stato rilasciato su GitHub in concomitanza con l’evento Build 2015 nel mese di aprile.
  • 35. Windows Bridge for iOS è concepito per consentire agli sviluppatori iOS di creare applicazioni Windows utilizzando il codice esistente in Objective-C e le sue competenze. A tale scopo, questo bridge è costituito da quattro componenti: Objective-C compiler un compilatore incluso in Visual Studio che prende il codice Objective-C e l’ho compila in una Windows Universal App nativa. Objective-C runtime per fornire funzionalità avanzate al linguaggio. iOS API headers/libs sulla base delle API di Objective-C, vengono fornite delle API che danno un’ampia compatibilità con le API iOS. Visual Studio IDE Integration infine viene fornito un tool che importa il progetto Xcode in Visual Studio 2015.
  • 36. Why the bridge is not a port L’obiettivo del bridge per iOS non è mai stato semplicemente quello di eseguire applicazioni iOS su Windows. Piuttosto l’obiettivo è aiutare a scrivere grandi applicazioni Windows che utilizzano non molto di piu’ del vostro codice già esistente e tutta la conoscenza dello sviluppatore. Naturalmente, stanno continuando a lavorare per ampliare la compatibilità con iOS.
  • 37. Dietro questo obiettivo ci sono tre principi fondamentali che hanno guidato l'architettura e il design del bridge per iOS: Accesso completo alle Windows API rende facile utilizzo delle Windows API all'interno di codice Objective-C. compatibilità iOS permettete agli sviluppatori di riutilizzare al massimo il codice esistente fin dove possibile. Nessun sandboxing iOS e le API di Windows devono essere in grado di lavorare insieme.
  • 38. Il primo e il terzo principio sono collegati e particolarmente importanti. Il primo principio perché Windows ha un set di API completamente funzionale e ricco, che continua a crescere ed evolversi. Il terzo perché avere la possibilità di chiamare e utilizzare interamente le API di Windows sarebbe severamente limitata se il set di API sarebbero in modalità sandbox uno da altro, limitando la capacità di compilare buone applicazioni Windows in Objective-C.
  • 39. Quando le API Windows e Objective-C si incontrano Il bridge utilizza un compilatore personalizzato (clang + cl) per compilare codice sorgente Objective- C, e i file oggetti generati sono poi collegati insieme utilizzando il linker di Microsoft. Questo approccio è ottimo perché permette a Objective-C e C++/CX di poter coesistere nello stesso progetto e chiamarsi tra loro utilizzando le interfacce di C o C++.
  • 40. Ad esempio, esaminiamo come è possibile richiamare in modo asincrono un browser nella vs app utilizzando il bridge: 1 auto uri = ref new Windows::Foundation::Uri("http://www.example.com"); 2 concurrency::task<bool> launchUriOperation (Windows::System::Launcher::LaunchUriAsync(uri)); 3 launchUriOperation.then([](bool success) 4 { 5 if (success) 6 { 7 // URI launched 8 } 9 else 10 { 11 // URI launch failed 12 } 13 }); Opzione 1 (invocando il browser dal codice c++/cx): Opzione 2 (invocando la stessa API dal codice Objective-C): [WSLauncher launchUriAsync:[WFUri createUri:@“http://www.example.com/”] success:nil failure:nil];
  • 41. XAML e UIKit: insieme all'unisono Ora che è possibile chiamare le API di Windows da Objective-C, per non limitare l'utilizzo di tale set di API, invece di implementare un compositor separato per gli elementi iOS/UIKit, l'intera applicazione utilizza il compositor XAML, con CALayers (che sono alla base essenzialmente di ogni vista in iOS) legato agli elementi XAML corrispondenti.
  • 42. Windows Bridge for iOS DEMO
  • 43. Perché Windows Bridge for iOS è disponibile su GitHub Microsoft ha messo a disposizione su GitHub tutti i sorgenti del framework e dei tools per permettere agli sviluppatori di contribuire in tanti modi al progetto WinObjC, come? - Segnalando un bug - Verificando la correzione dei bug - Inviando codice per la correzione di un bug - Inviando una richiesta di funzionalità - Inviando una prova di funzionalità - Dire agli altri sul progetto WinObjC - Dire gli sviluppatori quanto apprezzi il progetto
  • 44. Wiki Su GitHub è disponibile anche una pagina Wiki che guida passo-passo su come scaricare, installare e usare l’sdk ed il tool vsimporter. Il tool vsimporter consente di importare il progetto Xcode in una nuova soluzione UWP, con supporto ad Objective-C, per Windows 10. Se si vuole una soluzione per Windows 8.1, utilizzare l'opzione -format e specificare uno dei target: winstore8.1, winphone8.1 o winstore10 (winstore10 è il predefinito). Per ulteriori informazioni utilizzare l'opzione - help nella riga di comando per vedere la serie completa di opzioni supportate.
  • 45. Problemi o quesiti? Potete raggiungere il team di sviluppo in vari modi: - Tweeter @WindowsDev e segnare le domande con #winobjc - Inviare domande sui post di StackOverflow con il tag winobjc - Visitare il canale #winobjc su IRC (webchat.freenode.net) Visitate i siti: - https://dev.windows.com/it-it/bridges - https://dev.windows.com/it-it/bridges/ios - https://github.com/Microsoft/WinObjC - https://github.com/Microsoft/WinObjC/wiki Windows Bridge for iOS