SlideShare una empresa de Scribd logo
1 de 33
Applicazioni mobile multipiattaforma
       integrate con Drupal 7
  Nuove possibilità di marketing con PhoneGap



              Gianfranco Fedele
       Web software analyst presso Insem spa

                   @gianfrasoft
              gianfrasoft@gmail.com
Cos'è PhoneGap
           (per gli amici Cordova)
•   Adobe: PhoneGap is a free and open source
    framework that allows you to create mobile apps
    using standardized web APIs for the platforms you
    care about.

•   Apache: Cordova is a platform for building native
    mobile applications using HTML, CSS and
    JavaScript

•   Ajaxian: a great solution for Web developers to
    create applications with the technology they know
    and love, without having to jump off of the cliff to
    other proprietary worlds
Perché PhoneGap?

• E' semplice
• E' multipiattaforma
• Il know-how richiesto per lavorare con
  PG è già presente nella figura
  professionale dello sviluppatore Drupal
• Si integra facilmente con Drupal
In quale contesto conviene
   utilizzare PhoneGap?


 Possiamo identificare 2 contesti
 principali nell'ambito dei quali le app
 mobile vengono concepite:
In quale contesto conviene
   utilizzare PhoneGap?
 1. La app può essere sviluppata per
 produrre un guadagno diretto mediante
 attraverso la sua distribuzione
  • Vendita
  • Banner pubblicitari
  • In-App Purchase
In quale contesto conviene
   utilizzare PhoneGap?
 2. La app viene sviluppata nel contesto di un
 piano di marketing ovvero per distribuire
 informazioni commerciali (Brand app):
  •   cataloghi di prodotti
  •   volantini pubblicitari
  •   informazioni posizionali
  •   e-commerce
  •   form di contatto
Perché le aziende vogliono
     una brand app?
Perché le aziende vogliono
     una brand app?


Ma in particolare, perché noi sviluppatori
non vogliamo dargliela?
Perché le aziende vogliono
     una brand app?


Le app rappresentano un nuovo canale per
accedere ai servizi web.
Tempo dedicato all'utilizzo delle
app rispetto alla navigazione da
parte degli utenti di smartphone
Perché le app sono preferite
 alla navigazione classica?
•   Superano i limiti del Web, intimamente legato
    all'idea di una navigazione caratterizzata da
    uno scrolling verticale delle pagine
•   Offrono un approccio alla navigazione delle
    informazioni più gustoso (transizioni tra le viste,
    animazioni, ecc.)
•   Salvaguardano parte della user experience,
    operando anche in assenza di connettività
Quali competenze servono per
    intraprendere lo sviluppo delle
             app mobile?
•    iOS:
     XCode – Cocoa – Objective-C

•    Android
     Java – Android SDK

•    Windows Mobile
     C# – Silverlight – Visual Studio 2010
     ...
Contenuto della
        distribuzione di
         Cordova-2.1.0
• Un archivio per ogni SO: iOS, Android,
  WP7, ecc.
• Ogni archivio contiene un template per
  lo sviluppo di applicazioni per ciascun
  ambiente di sviluppo.
Contenuto della
        distribuzione di
         Cordova-2.1.0
• Ogni nuovo progetto PhoneGap
  contiene una sottocartella www che a
  sua volta contiene un file index.html
• Una app realizzata con PhoneGap crea
  una vista full screen contenente una
  WebView all'interno della quale viene
  caricato il file index.html
Competenze necessarie per lo
  sviluppo con PhoneGap

 • Javascript
 • HTML 5
 • CSS 3
 • SQLight
Competenze necessarie per lo
  sviluppo con PhoneGap

 • Javascript
 • HTML 5
 • CSS 3
 • SQLight
 L'integrazione con Drupal è già iniziata!
Quale architettura
Drupal-PhoneGap?
Quale architettura
Drupal-PhoneGap?
Quale integrazione tra
  PhoneGap e Drupal


Sono possibili due approcci
• Caricamento diretto dei contenuti
• Interfacciamento coi servizi
Caricamento diretto dei
       contenuti


Javascript è in grado di sfruttare la tecnologia
Ajax per operare modifiche del DOM della
pagina e quindi di caricare al volo le
informazioni da presentare all'utente.
Caricamento diretto dei
          contenuti
La app interroga il portale a specifiche URL
dalle quali riceve codice HTML da caricare
direttamente nel DOM.
•   Tema ad hoc con html.tpl.php “alleggerito”
•   Views Datasource
•   Imagecache
•   Browscup
Interrogazione del portale
function ricerca_nodi_per_titolo(titolo)
{
    $.ajax({
        url: site_url + "view-nodi?title=" + titolo,
        type: 'get',
        error: function (XMLHttpRequest, textStatus, errorThrown)
        {
             navigator.notification.alert('Si è verificato un
problema durante la ricerca delle agenzie.', null, "La mia
applicazione", "Ok");
        },
        success: function(data)
        {
             $.each(data.nodes, function(node_index, node_value)
             {
                 ...
             });
        }
    });
};
Interfacciamento coi
          servizi

Accesso alle informazioni in formato di
scambio JSON o XML e trasformazione
negli oggetti che popoleranno il DOM
• Services
• Services Views
Interrogazione dei servizi
function connect()
{
    $.ajax({
        url: services_url + "system/connect.json",
        type: 'post',
        dataType: 'json',
        error: function (XMLHttpRequest, textStatus,
errorThrown)
        {
             navigator.notification.alert('Errore di
connessione', null, "La mia applicazione", "Ok");
        },
        success: function (data)
        {
             ...
        }
    });
};
Interrogazione dei servizi
function login()
{
    $('#box-waiting').css('display', 'block');

    $.ajax({
        url: services_url + "user/login.json",
        type: 'post',
        data: 'username=' + encodeURIComponent(name) + '&password='
+ encodeURIComponent(pass),
        dataType: 'json',
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
             navigator.notification.alert('Si è verificato un
problema durante il login.', null, "La mia applicazione", "Ok");
        },
        success: function (data)
        {
             navigator.notification.alert('Bentornato!', null, "La
mia applicazione", "Ok");
    });
};
Interrogazione dei servizi
function logout()
{
    $.ajax({
        url: services_url + "user/logout.json",
        type: 'post',
        dataType: 'json',
        error: function(XMLHttpRequest, textStatus,
errorThrown)
        {
             navigator.notification.alert('Errore durante il
logout', null, "La mia applicazione", "Ok");
        },
        success: function (data)
        {
             navigator.notification.alert("Arrivederci.", null,
"La mia applicazione", "Ok");
        }
    });
};
Alcuni vantaggi offerti da
   Drupal e PhoneGap
Alcuni vantaggi offerti da
   Drupal e PhoneGap
• Javascript è nativamente asincrono
• Di default i session cookie sono gestiti
  automaticamente dal WebView
• Nella app le immagini possono linkare
  url disponibili sul portale Drupal
• Il layout della app può essere fluido o
  addirittura adattivo
Alcuni svantaggi
•   Le animazioni di transizione tra una vista e
    l'altra vanno simulate con Javascript o CSS3
•   Le librerie che solitamente si usano nei portali
    possono appesantire le app e rallentarle su
    dispositivi di vecchia generazione
•   Le librerie di cui sopra spesso sono concepite
    per il web ed adattate al mobile. Meglio fare
    attenzione
•   Ogni ambiente di sviluppo va opportunamente
    configurato per PhoneGap
Q&A


Gianfranco Fedele
gianfrasoft@gmail.com
DICE GRAZIE A SPONSOR




       MEDIA PARTNER




  IN COLLABORAZIONE CON




FIRMATO: GLI ORGANIZZATORI ;)

Más contenido relacionado

Destacado

Mobile Marketing
Mobile MarketingMobile Marketing
Mobile MarketingFabio Viola
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui designDotNetCampus
 
Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte
 
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
 
2.5tier Javaday (italian)
2.5tier Javaday (italian)2.5tier Javaday (italian)
2.5tier Javaday (italian)Luigi Fugaro
 
Android: il sistema operativo mobile di Google
Android: il sistema operativo mobile di GoogleAndroid: il sistema operativo mobile di Google
Android: il sistema operativo mobile di GoogleWami
 
Phpday 2010: facebook php framework
Phpday 2010: facebook php frameworkPhpday 2010: facebook php framework
Phpday 2010: facebook php frameworkMatteo Baccan
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi pluginPasquale Puzio
 

Destacado (9)

Mobile Marketing
Mobile MarketingMobile Marketing
Mobile Marketing
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui design
 
Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma Android
 
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
 
2.5tier Javaday (italian)
2.5tier Javaday (italian)2.5tier Javaday (italian)
2.5tier Javaday (italian)
 
Android: il sistema operativo mobile di Google
Android: il sistema operativo mobile di GoogleAndroid: il sistema operativo mobile di Google
Android: il sistema operativo mobile di Google
 
Phpday 2010: facebook php framework
Phpday 2010: facebook php frameworkPhpday 2010: facebook php framework
Phpday 2010: facebook php framework
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi plugin
 

Similar a Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7 Nuove possibil…

Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
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
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di GoogleMssiStf
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoMavigex srl
 
Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3Luca Peressini
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalyPaolo Dadda
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net orientedAlessandro Morvillo
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)Diego La Monica
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileRoberto Cappelletti
 

Similar a Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7 Nuove possibil… (20)

Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
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
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
 
Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3Applicazioni mobile integrate a TYPO3
Applicazioni mobile integrate a TYPO3
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net oriented
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobile
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 

Más de DrupalDay

[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.DrupalDay
 
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...DrupalDay
 
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client ManagerDrupalDay
 
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al themingDrupalDay
 
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5DrupalDay
 
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...DrupalDay
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di piùDrupalDay
 
[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 StakeholdersDrupalDay
 
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di SapienzaDrupalDay
 
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal![drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!DrupalDay
 
[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizio[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizioDrupalDay
 
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8DrupalDay
 
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a timeDrupalDay
 
[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 framework[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 frameworkDrupalDay
 
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release partyDrupalDay
 
[drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance![drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance!DrupalDay
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
[drupalday2017] - REST in pieces
[drupalday2017] - REST in pieces[drupalday2017] - REST in pieces
[drupalday2017] - REST in piecesDrupalDay
 
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...DrupalDay
 

Más de DrupalDay (20)

[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
 
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
 
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
 
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
 
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
 
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più
 
[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders
 
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
 
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal![drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!
 
[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizio[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizio
 
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
 
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
 
[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 framework[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 framework
 
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party
 
[drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance![drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance!
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - REST in pieces
[drupalday2017] - REST in pieces[drupalday2017] - REST in pieces
[drupalday2017] - REST in pieces
 
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
 

Último

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 

Último (9)

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 

Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7 Nuove possibil…

  • 1. Applicazioni mobile multipiattaforma integrate con Drupal 7 Nuove possibilità di marketing con PhoneGap Gianfranco Fedele Web software analyst presso Insem spa @gianfrasoft gianfrasoft@gmail.com
  • 2. Cos'è PhoneGap (per gli amici Cordova) • Adobe: PhoneGap is a free and open source framework that allows you to create mobile apps using standardized web APIs for the platforms you care about. • Apache: Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript • Ajaxian: a great solution for Web developers to create applications with the technology they know and love, without having to jump off of the cliff to other proprietary worlds
  • 3. Perché PhoneGap? • E' semplice • E' multipiattaforma • Il know-how richiesto per lavorare con PG è già presente nella figura professionale dello sviluppatore Drupal • Si integra facilmente con Drupal
  • 4. In quale contesto conviene utilizzare PhoneGap? Possiamo identificare 2 contesti principali nell'ambito dei quali le app mobile vengono concepite:
  • 5. In quale contesto conviene utilizzare PhoneGap? 1. La app può essere sviluppata per produrre un guadagno diretto mediante attraverso la sua distribuzione • Vendita • Banner pubblicitari • In-App Purchase
  • 6. In quale contesto conviene utilizzare PhoneGap? 2. La app viene sviluppata nel contesto di un piano di marketing ovvero per distribuire informazioni commerciali (Brand app): • cataloghi di prodotti • volantini pubblicitari • informazioni posizionali • e-commerce • form di contatto
  • 7. Perché le aziende vogliono una brand app?
  • 8. Perché le aziende vogliono una brand app? Ma in particolare, perché noi sviluppatori non vogliamo dargliela?
  • 9. Perché le aziende vogliono una brand app? Le app rappresentano un nuovo canale per accedere ai servizi web.
  • 10. Tempo dedicato all'utilizzo delle app rispetto alla navigazione da parte degli utenti di smartphone
  • 11. Perché le app sono preferite alla navigazione classica? • Superano i limiti del Web, intimamente legato all'idea di una navigazione caratterizzata da uno scrolling verticale delle pagine • Offrono un approccio alla navigazione delle informazioni più gustoso (transizioni tra le viste, animazioni, ecc.) • Salvaguardano parte della user experience, operando anche in assenza di connettività
  • 12. Quali competenze servono per intraprendere lo sviluppo delle app mobile? • iOS: XCode – Cocoa – Objective-C • Android Java – Android SDK • Windows Mobile C# – Silverlight – Visual Studio 2010 ...
  • 13. Contenuto della distribuzione di Cordova-2.1.0 • Un archivio per ogni SO: iOS, Android, WP7, ecc. • Ogni archivio contiene un template per lo sviluppo di applicazioni per ciascun ambiente di sviluppo.
  • 14. Contenuto della distribuzione di Cordova-2.1.0 • Ogni nuovo progetto PhoneGap contiene una sottocartella www che a sua volta contiene un file index.html • Una app realizzata con PhoneGap crea una vista full screen contenente una WebView all'interno della quale viene caricato il file index.html
  • 15. Competenze necessarie per lo sviluppo con PhoneGap • Javascript • HTML 5 • CSS 3 • SQLight
  • 16. Competenze necessarie per lo sviluppo con PhoneGap • Javascript • HTML 5 • CSS 3 • SQLight L'integrazione con Drupal è già iniziata!
  • 19. Quale integrazione tra PhoneGap e Drupal Sono possibili due approcci • Caricamento diretto dei contenuti • Interfacciamento coi servizi
  • 20. Caricamento diretto dei contenuti Javascript è in grado di sfruttare la tecnologia Ajax per operare modifiche del DOM della pagina e quindi di caricare al volo le informazioni da presentare all'utente.
  • 21. Caricamento diretto dei contenuti La app interroga il portale a specifiche URL dalle quali riceve codice HTML da caricare direttamente nel DOM. • Tema ad hoc con html.tpl.php “alleggerito” • Views Datasource • Imagecache • Browscup
  • 22. Interrogazione del portale function ricerca_nodi_per_titolo(titolo) { $.ajax({ url: site_url + "view-nodi?title=" + titolo, type: 'get', error: function (XMLHttpRequest, textStatus, errorThrown) { navigator.notification.alert('Si è verificato un problema durante la ricerca delle agenzie.', null, "La mia applicazione", "Ok"); }, success: function(data) { $.each(data.nodes, function(node_index, node_value) { ... }); } }); };
  • 23. Interfacciamento coi servizi Accesso alle informazioni in formato di scambio JSON o XML e trasformazione negli oggetti che popoleranno il DOM • Services • Services Views
  • 24.
  • 25.
  • 26. Interrogazione dei servizi function connect() { $.ajax({ url: services_url + "system/connect.json", type: 'post', dataType: 'json', error: function (XMLHttpRequest, textStatus, errorThrown) { navigator.notification.alert('Errore di connessione', null, "La mia applicazione", "Ok"); }, success: function (data) { ... } }); };
  • 27. Interrogazione dei servizi function login() { $('#box-waiting').css('display', 'block'); $.ajax({ url: services_url + "user/login.json", type: 'post', data: 'username=' + encodeURIComponent(name) + '&password=' + encodeURIComponent(pass), dataType: 'json', error: function(XMLHttpRequest, textStatus, errorThrown) { navigator.notification.alert('Si è verificato un problema durante il login.', null, "La mia applicazione", "Ok"); }, success: function (data) { navigator.notification.alert('Bentornato!', null, "La mia applicazione", "Ok"); }); };
  • 28. Interrogazione dei servizi function logout() { $.ajax({ url: services_url + "user/logout.json", type: 'post', dataType: 'json', error: function(XMLHttpRequest, textStatus, errorThrown) { navigator.notification.alert('Errore durante il logout', null, "La mia applicazione", "Ok"); }, success: function (data) { navigator.notification.alert("Arrivederci.", null, "La mia applicazione", "Ok"); } }); };
  • 29. Alcuni vantaggi offerti da Drupal e PhoneGap
  • 30. Alcuni vantaggi offerti da Drupal e PhoneGap • Javascript è nativamente asincrono • Di default i session cookie sono gestiti automaticamente dal WebView • Nella app le immagini possono linkare url disponibili sul portale Drupal • Il layout della app può essere fluido o addirittura adattivo
  • 31. Alcuni svantaggi • Le animazioni di transizione tra una vista e l'altra vanno simulate con Javascript o CSS3 • Le librerie che solitamente si usano nei portali possono appesantire le app e rallentarle su dispositivi di vecchia generazione • Le librerie di cui sopra spesso sono concepite per il web ed adattate al mobile. Meglio fare attenzione • Ogni ambiente di sviluppo va opportunamente configurato per PhoneGap
  • 33. DICE GRAZIE A SPONSOR MEDIA PARTNER IN COLLABORAZIONE CON FIRMATO: GLI ORGANIZZATORI ;)