SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Paulo Vitor Mira Fonseca
AGENDA

•   Problema

•   Introdução

•   Como Funciona?

•   Plugins

•   Demonstração

•   Agradecimentos
Diversas Plataformas
PROBLEMAS


•   Diversas plataformas

•   Linguagens de programação

•   Ambiente de desenvolvimento

•   Despadronização de componentes básicos
ALTERNATIVAS

•   Phonegap

•   PhoMobile

•   Titanium

•   WidgetPad
PHONEGAP


•   Desenvolvimento sistemas mobile utilizando páginas web

•   Acesso a recursos nativos

•   Framework base: APACHE CORDOVA

•   Open Source
Wrap your app with   Deploy to multiple
   PhoneGap             platforms!




 PROCESSO DE DEPLOY
APACHE CORDOVA

•   Incubado pela Apache.

•   OpenSource.

•   Plataforma de construção de aplicações mobile nativas utilizando HTML, CSS e
    JavaScript.

•   Utiliza o Browser nativo do dispositivo.
APACHE CORDOVA
APACHE CORDOVA



•   HTML 5

•   CSS 3
APACHE CORDOVA
FEATURES
ACELERÔMETRO
function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + 'n' +
          'Acceleration Y: ' + acceleration.y + 'n' +
          'Acceleration Z: ' + acceleration.z + 'n' +
          'Timestamp: '      + acceleration.timestamp +
'n');
};

function onError() {
    alert('onError!');
};

navigator.accelerometer.getCurrentAcceleration(onSuccess,
onError);
CÂMERA
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
 });

function onSuccess(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}

function onFail(message) {
    alert('Failed because: ' + message);
}
BÚSSOLA
function onSuccess(heading) {
    alert('Heading: ' + heading.magneticHeading);
};

function onError(error) {
    alert('CompassError: ' + error.code);
};

navigator.compass.getCurrentHeading(onSuccess, onError);



            navigator.compass.clearWatch(watchID);
CONTATOS
var myContact = navigator.contacts.create({"displayName": "Test User"});




var options = new ContactFindOptions();
options.filter="Bob";
var fields = ["displayName", "name"];
navigator.contacts.find(fields, onSuccess, onError, options);
GEOLOCALIZAÇÃO
var   onSuccess = function(position) {
      alert('Latitude: '          + position.coords.latitude          +   'n' +
            'Longitude: '         + position.coords.longitude         +   'n' +
            'Altitude: '          + position.coords.altitude          +   'n' +
            'Accuracy: '          + position.coords.accuracy          +   'n' +
            'Altitude Accuracy: ' + position.coords.altitudeAccuracy  +   'n' +
            'Heading: '           + position.coords.heading           +   'n' +
            'Speed: '             + position.coords.speed             +   'n' +
            'Timestamp: '         + position.timestamp                +   'n');
};

// onError Callback receives a PositionError object
//
function onError(error) {
    alert('code: '    + error.code    + 'n' +
          'message: ' + error.message + 'n');
}

navigator.geolocation.getCurrentPosition(onSuccess, onError);
NOTIFICAÇÃO
                                               function onConfirm(buttonIndex) {
                                                   alert('You selected button ' + buttonIndex);
function alertDismissed() {                    }
    // do something
}                                              // Show a custom confirmation dialog
                                               //
navigator.notification.alert(                  function showConfirm() {
    'You are the winner!',  //   message           navigator.notification.confirm(
    alertDismissed,         //   callback              'You are the winner!',  // message
    'Game Over',            //   title                 onConfirm,              // callback to invoke with index of button pressed
    'Done'                  //   buttonName            'Game Over',            // title
);                                                     'Restart,Exit'          // buttonLabels
                                                   );
                                               }




      navigator.notification.beep(2);                                navigator.notification.vibrate(2500);
STORAGE
var db = window.openDatabase("test", "1.0", "Test DB", 1000000);




   function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
   }

   function errorCB(err) {
       alert("Error processing SQL: "+err.code);
   }

   function successCB() {
       alert("success!");
   }

   var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
   db.transaction(populateDB, errorCB, successCB);
STORAGE
function queryDB(tx) {
    tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

function querySuccess(tx, results) {
    var len = results.rows.length;
    console.log("DEMO table: " + len + " rows found.");
    for (var i=0; i<len; i++){
        console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
    }
}

function errorCB(err) {
    alert("Error processing SQL: "+err.code);
}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);
LOCAL STORAGE
 window.localStorage.setItem("key", "value");




var value = window.localStorage.getItem("key");




    window.localStorage.removeItem("key");




         window.localStorage.clear();
APLICATIVOS
PLUGINS


•   Acesso à funcionalidades específicas

•   Componentes.

    •   Exemplo: Leitor de código de barras

•   https://github.com/phonegap/phonegap-plugins
PLUGINS


•   Desvantagens:

    •   Existem plugins para plataformas específicas

        •   PhoneListener - Android

        •   MapKitPlug - IPhone
PRÓS E CONTRAS
     PHONEGAP
PRÓS


•   Única aplicação para várias plataformas

•   Conhecimentos em Html5, CSS3 e javascript VS Object-c, Java e C#.

•   Aplicações em todos os markets (App Store, Google Play, ...).
CONTRAS


•   Aplicativos nativos são mais rápidos

•   Problemas de performance na construção de Jogos

•   Customização dos componentes
DEMONSTRAÇÃO
DÚVIDAS ???
paulo.fonseca@vpsa.com.br0


                                                             linkedin.com/in/pfonseca0


                                                            paulovitor.java@gmail.com0




    http://www.slideshare.net/paulovitormirafonseca/apresentacao-phonegap

                           OBRIGADO
Paulo Vitor Mira Fonseca

Mais conteúdo relacionado

Mais procurados

JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamJS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamiMasters
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoFreedom DayMS
 
Do zero ao jogo multiplataforma com cocos2d
Do zero ao jogo multiplataforma com cocos2dDo zero ao jogo multiplataforma com cocos2d
Do zero ao jogo multiplataforma com cocos2dVitor Mattos
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7iMasters
 
Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - PortuguesAlline Oliveira
 

Mais procurados (18)

Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
Python 06
Python 06Python 06
Python 06
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Clean Code
Clean CodeClean Code
Clean Code
 
jQuery Simplificando o JavaScript
jQuery Simplificando o JavaScriptjQuery Simplificando o JavaScript
jQuery Simplificando o JavaScript
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
 
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamJS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Python 07
Python 07Python 07
Python 07
 
Python 01
Python 01Python 01
Python 01
 
Do zero ao jogo multiplataforma com cocos2d
Do zero ao jogo multiplataforma com cocos2dDo zero ao jogo multiplataforma com cocos2d
Do zero ao jogo multiplataforma com cocos2d
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7
 
Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - Portugues
 

Semelhante a Apresentação Phonegap

Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)Loiane Groner
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaLoiane Groner
 
Aplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OSAplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OSEliezer Bernart
 
Introdução ao OpenLayers
Introdução ao OpenLayersIntrodução ao OpenLayers
Introdução ao OpenLayersFernando Quadro
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
A explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoA explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoNando Vieira
 
Introdução ao Titanium Mobile
Introdução ao Titanium MobileIntrodução ao Titanium Mobile
Introdução ao Titanium MobileEric Cavalcanti
 
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal AppsTDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal AppsDiego Castro
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connectionRoberson Alves
 
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamAndré Espeiorin
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
Desenvolvendo aplicações Adobe AIR para Android
Desenvolvendo aplicações Adobe AIR para AndroidDesenvolvendo aplicações Adobe AIR para Android
Desenvolvendo aplicações Adobe AIR para AndroidEric Cavalcanti
 
MobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapMobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapLoiane Groner
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 

Semelhante a Apresentação Phonegap (20)

Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
 
Aplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OSAplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OS
 
Introdução ao OpenLayers
Introdução ao OpenLayersIntrodução ao OpenLayers
Introdução ao OpenLayers
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
A explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo pretoA explosão do Node.js: JavaScript é o novo preto
A explosão do Node.js: JavaScript é o novo preto
 
Introdução ao Titanium Mobile
Introdução ao Titanium MobileIntrodução ao Titanium Mobile
Introdução ao Titanium Mobile
 
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal AppsTDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
 
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr JamDesenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
 
Html5
Html5Html5
Html5
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Tracking.js
Tracking.jsTracking.js
Tracking.js
 
Desenvolvendo aplicações Adobe AIR para Android
Desenvolvendo aplicações Adobe AIR para AndroidDesenvolvendo aplicações Adobe AIR para Android
Desenvolvendo aplicações Adobe AIR para Android
 
MobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapMobileConf 2013: PhoneGap
MobileConf 2013: PhoneGap
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 

Apresentação Phonegap

  • 2. AGENDA • Problema • Introdução • Como Funciona? • Plugins • Demonstração • Agradecimentos
  • 4. PROBLEMAS • Diversas plataformas • Linguagens de programação • Ambiente de desenvolvimento • Despadronização de componentes básicos
  • 5. ALTERNATIVAS • Phonegap • PhoMobile • Titanium • WidgetPad
  • 6. PHONEGAP • Desenvolvimento sistemas mobile utilizando páginas web • Acesso a recursos nativos • Framework base: APACHE CORDOVA • Open Source
  • 7. Wrap your app with Deploy to multiple PhoneGap platforms! PROCESSO DE DEPLOY
  • 8. APACHE CORDOVA • Incubado pela Apache. • OpenSource. • Plataforma de construção de aplicações mobile nativas utilizando HTML, CSS e JavaScript. • Utiliza o Browser nativo do dispositivo.
  • 10. APACHE CORDOVA • HTML 5 • CSS 3
  • 12.
  • 13.
  • 15. ACELERÔMETRO function onSuccess(acceleration) {     alert('Acceleration X: ' + acceleration.x + 'n' +           'Acceleration Y: ' + acceleration.y + 'n' +           'Acceleration Z: ' + acceleration.z + 'n' +           'Timestamp: '      + acceleration.timestamp + 'n'); }; function onError() {     alert('onError!'); }; navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
  • 16. CÂMERA navigator.camera.getPicture(onSuccess, onFail, { quality: 50,     destinationType: Camera.DestinationType.DATA_URL  }); function onSuccess(imageData) {     var image = document.getElementById('myImage');     image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) {     alert('Failed because: ' + message); }
  • 17. BÚSSOLA function onSuccess(heading) {     alert('Heading: ' + heading.magneticHeading); }; function onError(error) {     alert('CompassError: ' + error.code); }; navigator.compass.getCurrentHeading(onSuccess, onError); navigator.compass.clearWatch(watchID);
  • 18. CONTATOS var myContact = navigator.contacts.create({"displayName": "Test User"}); var options = new ContactFindOptions(); options.filter="Bob"; var fields = ["displayName", "name"]; navigator.contacts.find(fields, onSuccess, onError, options);
  • 19. GEOLOCALIZAÇÃO var onSuccess = function(position) {     alert('Latitude: '          + position.coords.latitude          + 'n' +           'Longitude: '         + position.coords.longitude         + 'n' +           'Altitude: '          + position.coords.altitude          + 'n' +           'Accuracy: '          + position.coords.accuracy          + 'n' +           'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + 'n' +           'Heading: '           + position.coords.heading           + 'n' +           'Speed: '             + position.coords.speed             + 'n' +           'Timestamp: '         + position.timestamp                + 'n'); }; // onError Callback receives a PositionError object // function onError(error) {     alert('code: '    + error.code    + 'n' +           'message: ' + error.message + 'n'); } navigator.geolocation.getCurrentPosition(onSuccess, onError);
  • 20. NOTIFICAÇÃO function onConfirm(buttonIndex) {     alert('You selected button ' + buttonIndex); function alertDismissed() { }     // do something } // Show a custom confirmation dialog // navigator.notification.alert( function showConfirm() {     'You are the winner!',  // message     navigator.notification.confirm(     alertDismissed,         // callback         'You are the winner!',  // message     'Game Over',            // title         onConfirm,              // callback to invoke with index of button pressed     'Done'                  // buttonName         'Game Over',            // title );         'Restart,Exit'          // buttonLabels     ); } navigator.notification.beep(2); navigator.notification.vibrate(2500);
  • 21. STORAGE var db = window.openDatabase("test", "1.0", "Test DB", 1000000); function populateDB(tx) {      tx.executeSql('DROP TABLE IF EXISTS DEMO');      tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');      tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');      tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); } function errorCB(err) {     alert("Error processing SQL: "+err.code); } function successCB() {     alert("success!"); } var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000); db.transaction(populateDB, errorCB, successCB);
  • 22. STORAGE function queryDB(tx) {     tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); } function querySuccess(tx, results) {     var len = results.rows.length;     console.log("DEMO table: " + len + " rows found.");     for (var i=0; i<len; i++){         console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);     } } function errorCB(err) {     alert("Error processing SQL: "+err.code); } var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000); db.transaction(queryDB, errorCB);
  • 23. LOCAL STORAGE window.localStorage.setItem("key", "value"); var value = window.localStorage.getItem("key"); window.localStorage.removeItem("key"); window.localStorage.clear();
  • 25. PLUGINS • Acesso à funcionalidades específicas • Componentes. • Exemplo: Leitor de código de barras • https://github.com/phonegap/phonegap-plugins
  • 26. PLUGINS • Desvantagens: • Existem plugins para plataformas específicas • PhoneListener - Android • MapKitPlug - IPhone
  • 27. PRÓS E CONTRAS PHONEGAP
  • 28. PRÓS • Única aplicação para várias plataformas • Conhecimentos em Html5, CSS3 e javascript VS Object-c, Java e C#. • Aplicações em todos os markets (App Store, Google Play, ...).
  • 29. CONTRAS • Aplicativos nativos são mais rápidos • Problemas de performance na construção de Jogos • Customização dos componentes
  • 32. paulo.fonseca@vpsa.com.br0 linkedin.com/in/pfonseca0 paulovitor.java@gmail.com0 http://www.slideshare.net/paulovitormirafonseca/apresentacao-phonegap OBRIGADO Paulo Vitor Mira Fonseca