SlideShare uma empresa Scribd logo
Loiane Groner
http://loiane.com
Mini Curso
• 9+ XP TI
• Java, Sencha, Phonegap/Ionic
• http://loiane.com
• @loiane
• Meus livros:
Loiane Groner
• Apps híbridas
• Phonegap e Cordova
• Ionic Stack
• Angular JS
• O que é Ionic
• Demo
• Ferramentas
• Build para App Stores
Agenda
Apps híbridas
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Nativo Web
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Phonegap
Mini curso: Ionic Framework
Seu Código
WebView Nativa (Browser)
Seu Código
APIs Nativas
WebView Nativa (Browser)
Seu Código
App Nativa: .apk, .ipa, etc
APIs Nativas
WebView Nativa (Browser)
Seu Código
Interface de uma app
phonegap
É uma instância do
browser nativo
100% largura e altura
Browser nativo (WebView)
sem barra de favoritos
sem barra para mudar url
x
Phonegap x Cordova
Phonegap
Phonegap Dev App
Phonegap Build
Phonegap Enterprise
Cordova
Comunidade
Código fonte
Plugins
APIs
Ponte com plataforma nativa
Instalação
Phonegap CLI
Cordova CLI
http://nodejs.org/
sudo npm install -g cordova
sudo npm install -g phonegap
Linux ou Mac OS
npm install -g cordova
npm install -g phonegap
Windows
Criando um Projeto
cordova create hello com.loiane.hello HelloWorld
phonegap create hello com.loiane.hello HelloWorld
Mini curso: Ionic Framework
www: código fonte da app (HTML/CSS/JS)
plugins: plugins cordova/phonegap do projeto
plataforms: onde o projeto nativo de cada
plataforma (android, iOS, wp) é criado
hooks: scripts adicionais para o CLI
config.xml: arquivo de configuração das
plataformas e projeto (também usado com
phonegap build)
Testando e Emulando
Localmente
Mini curso: Ionic Framework
cordova platform add android
Add Plataforma
phonegap platform add android
Mini curso: Ionic Framework
Mini curso: Ionic Framework
cordova emulate android
Emular
phonegap emulate android
Plugins
Mini curso: Ionic Framework
Contacts
cordova plugin add org.apache.cordova.contacts
phonegap plugin add org.apache.cordova.contacts
cordova plugin add cordova-plugin-contacts
> 5.x
https://www.npmjs.com/package/cordova-plugin-contacts
listContacts: function(){
function onSuccess(contacts) {
alert('Found ' + contacts.length + ' contacts.');
}
function onError(contactError) {
alert('onError!');
}
var options = new ContactFindOptions();
options.multiple = true;
options.desiredFields = [navigator.contacts.fieldType.id];
var fields = [navigator.contacts.fieldType.displayName, navigator.contacts.fieldType.name];
navigator.contacts.find(fields, onSuccess, onError, options);
}
Mini curso: Ionic Framework
pickContact: function(){
navigator.contacts.pickContact(function(contact){
alert('The following contact has been selected:' + JSON.stringify(contact));
},function(err){
console.log('Error: ' + err);
});
}
Mini curso: Ionic Framework
createContact: function(){
var myContact = navigator.contacts.create({"displayName": "AAA Test Phonegap"});
if (myContact){
myContact.save(onSuccess,onError);
}
function onSuccess(contact) {
alert("Save Success");
}
function onError(contactError) {
alert("Error = " + contactError.code);
}
}
Mini curso: Ionic Framework
Views
Mini curso: Ionic Framework
• Phonegap e Cordova não possuem
componentes
• Phonegap e Cordova não possuem
componentes
• Phonegap e Cordova não possuem
componentes
• Necessário usar bibliotecas ou
frameworks
Mini curso: Ionic Framework
Topcoat
DOM
Architecture
UI
Full Stack
Ionic
Angular.JS
WebView
Cordova
Dispositivo
Stack
Mini curso: Ionic Framework
Mini curso: Ionic Framework
• Criado em 2009
• JavaScript MVC
• Programação declarativa
• Amplamente adotado pelo mercado
• MVC: Model View Controller
• 2 way data binding
• Templates HTML
• Injeção de dependência
• Diretivas
• Roteamento
Features
MVC no frontend
Diretivas
<body ng-app="tasks" ng-controller="TasksCtrl">
<ion-item ng-repeat="task in tasks" item="task" class="item-remove-animate">
{{ task.name }}
<ion-delete-button class="ion-minus-circled"
ng-click="onItemDelete(task)">
</ion-delete-button>
<ion-option-button class="button-calm"
ng-click="edit(task)">
Edit
</ion-option-button>
<ion-reorder-button class="ion-navicon"
on-reorder="moveItem(item, $fromIndex, $toIndex)"></ion-reorder-button>
</ion-item>
Data Binding
$scope.tasks = TasksService.all();
<body ng-app="tasks" ng-controller="TasksCtrl">
<ion-item ng-repeat="task in tasks" item="task" class="item-remove-
animate">
Injeção de Dependência
.controller('TasksCtrl', function($scope, $ionicModal, $ionicPopup, TasksService)
Templates e Roteamento
config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
templateUrl: "templates/menu.html"
})
.state('app.cors-disabled', {
url: "/cors-disabled",
views: {
'menuContent': {
templateUrl: "templates/cors-disabled.html",
controller: 'CORSDisabledCtrl'
}
}
})
.state('app.cors-enabled', {
url: "/cors-enabled",
views: {
'menuContent': {
templateUrl: "templates/cors-enabled.html",
controller: 'CORSEnabledCtrl'
}
}
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/app/home');
});
Módulos
angular.module('starter.controllers', ['ngCordova'])
Mini curso: Ionic Framework
<div class="list">
<div class="item item-divider">
Candy Bars
</div>
<a class="item" href="#">
Butterfinger
</a>
<a class="item" href="#">
Kit Kat
</a>
...
</div>
List
<ion-list>
<ion-item ng-repeat="item in items" item="item">
List Item {{ item.id }}
</ion-item>
</ion-list>
Complex List
• Diretiva AngularJS
• Swiping para ver os botões
• Reorder
• Delete
Complex List
• Similar ao ng-repeat do Angular
• Inspirado pelo iOS UICollectionView
• Scroll milhares de items items
• Apenas renderiza items visíveis
• Scroll com performance
<div class="list">
<div collection-repeat="c in contacts">
<h2>{{ c.name }}</h2>
<p>{{ c.email }}</p>
</div>
</div>
Navigation
• Usa AngularUI Router
• Mostra botãoVoltar quando possível
• Transições obedecem direção da pag
• Funciona com botãoVoltar - Android
<ion-nav-bar>
<ion-nav-back-button>
Back
</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
Tabs
• Nested views
• Cada tab tem próprio history
• Estados abstraídos no router - Angular
<ion-tabs>
<ion-tab title="Home" icon="ion-home">
<ion-nav-view name="home"></ion-nav-view>
</ion-tab>
<ion-tab title="About" icon="ion-information">
<ion-nav-view name="about"></ion-nav-view>
</ion-tab>
<ion-tab title="Contact" icon="ion-ios7-world">
<ion-nav-view name="contact"></ion-nav-view>
</ion-tab>
</ion-tabs>
Side Menu
<ion-side-menus>
<ion-side-menu-content>
<ion-nav-view name="menuContent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<ion-header-bar class="bar-assertive">
<h1 class="title">Left Menu</h1>
</ion-header-bar>
<ion-content>
...
</ion-content>
</ion-side-menu>
</ion-side-menus>
Slide Box
<ion-slide-box on-slide-changed="change(index)">
<ion-slide>
Slide 1
</ion-slide>
<ion-slide>
Slide 2
</ion-slide>
<ion-slide>
Slide 3
</ion-slide>
</ion-slide-box>
Action Sheet
• Serviço AngularJS
• Injeção nos controllers
$ionicActionSheet.show({
titleText: 'Action Sheet Example',
buttons: [
{ text: 'Share' },
{ text: 'Move' },
],
destructiveText: 'Delete',
cancelText: 'Cancel',
buttonClicked: function(index) {
console.log('BUTTON CLICKED', index);
return true;
}
});
Mini curso: Ionic Framework
Instalação
npm install -g cordova ionic
ionic start myApp tabs
Criando uma app
ionic start myApp sidemenu
ionic start myApp blank
ionic serve
Estrutura Projeto
Familiar?
Projeto Cordova
Usa lib do Ionic
Angular
Overview Código
Fonte Ionic
ionic platform add android
ionic build android
ionic emulate android
Desenv Nativo: Local
Mini curso: Ionic Framework
ionic serve -l
Mini curso: Ionic Framework
Plugins
http://ngcordova.com/
• Extensão Angular
• Abstração do uso dos plugins Cordova
• Tanto faz usar o plugin diretamente ou ngCordova
.controller('ContactsCtrl', function ($scope, $log, $cordovaContacts) {
$scope.pickContact = function () {
document.addEventListener("deviceready", function () {
$cordovaContacts.pickContact().then(function (result) {
console.log(JSON.stringify(result));
$scope.selectedContact = result;
})
}, false);
};
$scope.saveContact = function (contact) {
document.addEventListener("deviceready", function () {
$cordovaContacts.save(contact).then(function (result) {
console.log(JSON.stringify(result));
})
}, false);
};
$scope.removeContact = function (contact) {
document.addEventListener("deviceready", function () {
$cordovaContacts.remove(contact).then(function (result) {
console.log(JSON.stringify(result));
})
}, false);
};
})
createContact: function(){
var myContact = navigator.contacts.create({"displayName": "AAA Test Phonegap"});
if (myContact){
myContact.save(onSuccess,onError);
}
function onSuccess(contact) {
alert("Save Success");
}
function onError(contactError) {
alert("Error = " + contactError.code);
}
}
Serviços
e
Ferramentas
Mini curso: Ionic Framework
http://creator.ionic.io/
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Mini curso: Ionic Framework
http://view.ionic.io/
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Mini curso: Ionic Framework
http://play.ionic.io/
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Mini curso: Ionic Framework
Ferramentas de DEBUG
https://www.genuitec.com/products/gapdebug/
Mini curso: Ionic Framework
Opções para fazer Build
Build pela IDE
cordova platform add android
Add Plataforma
phonegap platform add android
ionic platform add android
Mini curso: Ionic Framework
Phonegap Build
https://build.phonegap.com/
Mini curso: Ionic Framework
Ionic no Phonegap Build?
Ionic no Phonegap Build?
https://github.com/IonicBrazil
http://loiane.com
fb.com/loianegroner
@loiane
https://github.com/loiane
youtube.com/user/Loianeg
Obrigada!

Mais conteúdo relacionado

PPTX
Android - Application Framework
Yong Heui Cho
 
PDF
API for Beginners
Sébastien Saunier
 
PDF
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
iMasters
 
PPTX
Android app ppt
ADI ADARSH
 
PPTX
Authorization and Authentication using IdentityServer4
Aaron Ralls
 
PPTX
Android Synopsis
Niraj Rahi
 
PDF
Android
Jindal Gohil
 
PDF
PUC SE Day 2019 - SpringBoot
Josué Neis
 
Android - Application Framework
Yong Heui Cho
 
API for Beginners
Sébastien Saunier
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
iMasters
 
Android app ppt
ADI ADARSH
 
Authorization and Authentication using IdentityServer4
Aaron Ralls
 
Android Synopsis
Niraj Rahi
 
Android
Jindal Gohil
 
PUC SE Day 2019 - SpringBoot
Josué Neis
 

Mais procurados (20)

PPTX
Why Progressive Web Apps For WordPress - WordCamp Finland
Imran Sayed
 
PDF
Asterisk: the future is at REST
PaloSanto Solutions
 
PDF
Socket.IO
Davide Pedranz
 
PDF
Jetpack Compose beginner.pdf
AayushmaAgrawal
 
PPTX
introduction about REST API
AmilaSilva13
 
PPTX
The Indicators of Compromise
Tomasz Jakubowski
 
PPTX
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
PPTX
Progressive Web Apps
Nitheesh T Ganesh
 
PPTX
Android ppt
Sunil Kumar
 
PDF
JavaScript MEAN 스택
Tai Hoon KIM
 
PPTX
React Native
ASIMYILDIZ
 
PPTX
Python/Flask Presentation
Parag Mujumdar
 
PPTX
MEAN stack
Iryney Baran
 
PDF
2021.laravelconf.tw.slides5
LiviaLiaoFontech
 
PDF
Best Practices - PHP and the Oracle Database
Christopher Jones
 
PPTX
Hibernate in Action
Akshay Ballarpure
 
PPTX
Android Fish Game Development
Rasel Khan
 
PPTX
Django
Abhijeet Shekhar
 
PPT
Android Architecture
deepakshare
 
PPTX
Web Application Development using PHP and MySQL
Ganesh Kamath
 
Why Progressive Web Apps For WordPress - WordCamp Finland
Imran Sayed
 
Asterisk: the future is at REST
PaloSanto Solutions
 
Socket.IO
Davide Pedranz
 
Jetpack Compose beginner.pdf
AayushmaAgrawal
 
introduction about REST API
AmilaSilva13
 
The Indicators of Compromise
Tomasz Jakubowski
 
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
Progressive Web Apps
Nitheesh T Ganesh
 
Android ppt
Sunil Kumar
 
JavaScript MEAN 스택
Tai Hoon KIM
 
React Native
ASIMYILDIZ
 
Python/Flask Presentation
Parag Mujumdar
 
MEAN stack
Iryney Baran
 
2021.laravelconf.tw.slides5
LiviaLiaoFontech
 
Best Practices - PHP and the Oracle Database
Christopher Jones
 
Hibernate in Action
Akshay Ballarpure
 
Android Fish Game Development
Rasel Khan
 
Android Architecture
deepakshare
 
Web Application Development using PHP and MySQL
Ganesh Kamath
 
Anúncio

Destaque (14)

PDF
Offline apps Using Ionic Framework and PouchDB
Alvaro Viebrantz
 
PPTX
Usando PushWoosh com Ionic Framework
Emerson Thompson
 
PDF
Mini curso - Ionic Framework
juniorschroder
 
PDF
Ionic Framework - Configuração do ambiente e a criação da primeira APP
Fabio Godoy
 
PDF
SEO - Marketing pra Web
Gregorio Almeida Queiroz
 
ODP
Introduction to jQuery
manugoel2003
 
PPTX
Angular 2 with typescript
Tayseer_Emam
 
PPTX
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Alamo Saravali
 
PPTX
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Wennder Santos
 
PPTX
Ionic + Cordova para Desenvolvimento Mobile
Waldyr Felix
 
PPTX
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Felipe Blini
 
PDF
Introducao ao Ionic 2 na pratica
Loiane Groner
 
PDF
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Offline apps Using Ionic Framework and PouchDB
Alvaro Viebrantz
 
Usando PushWoosh com Ionic Framework
Emerson Thompson
 
Mini curso - Ionic Framework
juniorschroder
 
Ionic Framework - Configuração do ambiente e a criação da primeira APP
Fabio Godoy
 
SEO - Marketing pra Web
Gregorio Almeida Queiroz
 
Introduction to jQuery
manugoel2003
 
Angular 2 with typescript
Tayseer_Emam
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Alamo Saravali
 
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Wennder Santos
 
Ionic + Cordova para Desenvolvimento Mobile
Waldyr Felix
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Felipe Blini
 
Introducao ao Ionic 2 na pratica
Loiane Groner
 
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Anúncio

Semelhante a Mini curso: Ionic Framework (20)

PDF
Ionic 2 na pratica!
Loiane Groner
 
PDF
SampaJS 2016: Ionic 2
Loiane Groner
 
PDF
TDC SP 2016: Ionic 2
Loiane Groner
 
PDF
Desenvolvimento de aplicativo utilizando o framework ionic
Universidade Federal Rural do Semi Arido
 
PDF
Mobile Summit Brazil: Ionic 2
Loiane Groner
 
PDF
DevFest BH: Ionic 2
Loiane Groner
 
PPTX
Workshop - Cordova e Ionic
Felipe Lastowizka
 
PDF
DevFest Nordeste: Ionic 2
Loiane Groner
 
PDF
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Thiago Colares
 
PDF
MobileConf 2013: PhoneGap
Loiane Groner
 
PDF
Congresso TI 2015: Introducao ao Phonegap (Cordova)
Loiane Groner
 
PDF
Desenvolvimento de aplicativos Móveis com IONIC
Gisely Lucas
 
PDF
Ionic
dam01pucminas
 
PDF
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
Loiane Groner
 
PPTX
Palestra GU Mobile (Ionic Framework) por Leonardo Quevedo
Leonardo Quevedo
 
PPTX
Dominando o Ionic Framework
Junior Abranches
 
PDF
Ionic 3
Loiane Groner
 
PDF
Ionic 2 como ferramenta para desenvolvimento móvel
Gustavo Costa
 
PDF
Palestra sobre desenvolvimento de aplicativos híbridos (SEMAC 2016)
Henrique Dezani
 
PDF
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Marcelo Marques Gonçalves
 
Ionic 2 na pratica!
Loiane Groner
 
SampaJS 2016: Ionic 2
Loiane Groner
 
TDC SP 2016: Ionic 2
Loiane Groner
 
Desenvolvimento de aplicativo utilizando o framework ionic
Universidade Federal Rural do Semi Arido
 
Mobile Summit Brazil: Ionic 2
Loiane Groner
 
DevFest BH: Ionic 2
Loiane Groner
 
Workshop - Cordova e Ionic
Felipe Lastowizka
 
DevFest Nordeste: Ionic 2
Loiane Groner
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Thiago Colares
 
MobileConf 2013: PhoneGap
Loiane Groner
 
Congresso TI 2015: Introducao ao Phonegap (Cordova)
Loiane Groner
 
Desenvolvimento de aplicativos Móveis com IONIC
Gisely Lucas
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
Loiane Groner
 
Palestra GU Mobile (Ionic Framework) por Leonardo Quevedo
Leonardo Quevedo
 
Dominando o Ionic Framework
Junior Abranches
 
Ionic 3
Loiane Groner
 
Ionic 2 como ferramenta para desenvolvimento móvel
Gustavo Costa
 
Palestra sobre desenvolvimento de aplicativos híbridos (SEMAC 2016)
Henrique Dezani
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Marcelo Marques Gonçalves
 

Último (7)

PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 

Mini curso: Ionic Framework