Titanium Mobile - Campus Party Recife 2

Post on 06-Dec-2014

2.238 views 0 download

description

Slides da minha apresentação na Campus Party Recife 2

Transcript of Titanium Mobile - Campus Party Recife 2

APLICAÇÕES MULTI-PLATAFORMA COM TITANIUM MOBILE

var palestrante;

palestrante = {nome : 'Eric Cavalcanti',trabalhaNo : 'CESAR',certificação : 'TCAD',titan : true,contato : 'ecavalcanti@gmail.com',twitter : '@ericoc',blog : 'tips4dev.com'

}

Apoiada pela Storm Ventures, Sierra Ventures e eBay. Appcelerator Inc. foi fundada em 2007 por especialista em

desenvolvimento web.

GSMA Global Mobile Awards

2012 Winner

Gartner 2012 Magic Quadrant

Visionary for Mobile Application

Development Platform

O QUE É TITANIUM MOBILE?Titanium Mobile é um ambiente open source para desenvolvimento de aplicativos móveis multiplataforma utilizando uma das linguagens mais conhecidas mundialmente, o JavaScript.

LICENÇA

SDKs e Titanium Studio – open source e free

Licença Apache 2.0

Serviços comerciais de treinamentos, suporte, módulos pagos, programa de certificações

APPCELERATOR

PLATFORM

TITANIUM MOBILE

470K!Developers!

55K!Apps!

140M!Devices!

QUEM USA?

... e mais

PLATAFORMA SUPORTADAS

PLATAFORMA SUPORTADAS

Nativa

TIPOS DE APLICAÇÕES

Mobile Web Híbrida

MOBILE WEB

MOBILE WEB

CSS3JavaScript

GeolocalizaçãoCâmeraBanco de dados

{

MOBILE WEB

MOBILE WEB

HÍBRIDA

Camada Nativa

<html>...</html>

UI

webview iOSObjective-C

AndroidJava

Windows Phone C# / Visual Basic

{

HÍBRIDA

Camada Nativa

<html>...</html>

UI

webview

GeolocalizaçãoCâmeraBanco de dadosContatosBússolaNotificaçõesMicrofoneSistemas de arquivos

{

HÍBRIDA

Camada Nativa

<html>...</html>

UI

webview

.ipa .apk .xap

HÍBRIDA

Camada Nativa

<html>...</html>

UI

webview

.ipa .apk .xap

HÍBRIDA

NATIVA

iOSObjective-C

AndroidJava

Windows Phone C# / Visual Basic

.ipa .apk .xap

NATIVA

iOSObjective-C

AndroidJava

Windows Phone C# / Visual Basic

.ipa .apk .xap

NATIVA

Híbrida

E O TITANIUM MOBILE?

Mobile Web Nativa

E O TITANIUM MOBILE?

Nativa

?

COMO FUNCIONA?

Bridge (JavaScript - Nativo)

var btn = Ti.UI.createButton();

Titanium JavaScript API

UIButton Class button

EXEMPLO

TITANIUM MOBILE

Código JavaScript + Assets

Interpretador JavaScript

Titanium Bridge(código nativo)

.ipa .apk

TITANIUM MOBILE

Código JavaScript + Assets

Interpretador JavaScript

Titanium Bridge(código nativo)

.ipa .apk

POR QUE NATIVA?

O usuário já está acostumado em utilizar aplicações nativas em seu dispositivo

UI nativa tem melhor performance

Aumentamos consideravelmente a probabilidade de aprovação por lojas mais criteriosas

PLATAFORMA ANDROID

Action bar

PLATAFORMA IOS

POR QUE NATIVA COM TITANIUM?

Não estamos limitados a uma

plataforma específica

1

Suporte para as maiores plataformas

(iOS, Android, Mobile Web, BB10, Windows 8)

2

Reduz o tempo gastoaprendendo diversas

linguagens

Conhecimento facilmente transferido

3

Código base único

Reduz duplicação de esforço

CÓDIGO NATIVO IOS

// Objective-C

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Hello World" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alert show];

// Java/AndroidAlertDialog.Builder alertDialog = new AlertDialog.Builder(this).create();alertDialog.setMessage("Hello World");alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // Fazer alguma coisa } });

alertDialog.show();;

CÓDIGO NATIVO ANDROID

COM O TITANIUM

alert("Hello World");

...e multi-plataforma!

SHOWCASE

http://www.appcelerator.com/customers/app-showcase/

NBCIPHONE E IPAD

SCOUTMOBIPHONE E ANDROID

ZIP CARANDROID

WOTCHAPP!IPHONE, IPAD E ANDROID

GAMESTOPIPHONE E ANDROID

AIRPORTCHATTERIPHONE

CARDDIIPHONE E ANDROID

MAIS EXEMPLOS...

http://www.builtwithtitanium.com/

PRÉ-REQUISITOS

Mac OS X 10.7 (Lion) ou superior

Windows 7 ou superior

Ubuntu Linux 12.04 LTS

iOS SDK

Android SDK

Tizen SDK

TITANIUM STUDIO E SDKS

Titanium Studio é uma IDE baseada no eclipse que interage com vários scripts Python contidos no Titanium SDK

Os scripts interagem com as ferramentas nativas de cada plataforma

OPEN MOBILE MARKETPLACEhttp://marketplace.appcelerator.com

TIPOS DE

PROJETO

TITANIUM CLASSIC

Interface definida via código

CommonJS Modules

CLASSIC

EXECUTANDO CÓDIGO ESPECÍFICO PARA UMA

PLATAFORMA(CLASSIC)

if (Ti.Platform.osname == "android") { ...} else { ...}

[android, iphone, ipad, mobileweb, tizen]

TITANIUM ALLOY

UI declarativa (XML)

Framework MVC

Widgets

Themes

ALLOY APP

index.xml index.tss

index.js

$.index.open();

POR QUE UM FRAMEWORK MVC?

Provê uma clara separação de papéis e responsabilidades

Melhor organização do código

Mais fácil de manter e expandir

MVC

Models - fornece a lógica de negócio, contém regras, dados e o estado da aplicação.

Views - fornece os componentes de UI para o usuário, apresentando os dados e permitindo que o usuário interaja com o modelo.

Controllers - fornece a interação entre os componentes de UI e o modelo.

MVC

Controller

Model View

MVC

Controller

Model View

Encapsula dados e comportamento

MVC

Controller

Model View

Apresenta informações ao usuárioe recebe suas interações

MVC

Controller

Model View

Intermediário entreo Model e a View

ESTRUTURA DO

PROJETO

ESTRUTURA DO

PROJETO

ESTRUTURA DO

PROJETO

ESTRUTURA DO

PROJETO

ESTRUTURA DO

PROJETO

ALLOY

EXECUTANDO CÓDIGO ESPECÍFICO PARA UMA

PLATAFORMA(ALLOY)

if (OS_ANDROID) { ...} else { ...}

[OS_IOS, OS_ANDROID, OS_MOBILEWEB, ENV_DEV, ENV_TEST, ENV_PRODUCTION]

EXECUTANDO CÓDIGO ESPECÍFICO PARA UMA

PLATAFORMA(ALLOY)

<Alloy> <Window> <View ns="Ti.Map" id="mapview"> <Annotation title="Cupertino" platform='ios' formFactor='tablet' latitude='37.3231' longitude='-122.0311'/> <Annotation title="Redwood City" platform='ios' formFactor='handheld' latitude='37.4853' longitude='-122.2353'/> <Annotation title="Mountain View" platform='android' latitude='37.3861' longitude='-122.0828'/> <Annotation title="Palo Alto" platform='android,ios,mobileweb' latitude='37.4419' longitude='-122.1419'/> <Annotation title="San Francisco" platform='mobileweb' latitude='37.7750' longitude='-122.4183'/> </View> </Window></Alloy>

[android, ios, mobileweb]

EXECUTANDO CÓDIGO ESPECÍFICO PARA UMA

PLATAFORMA(ALLOY)

<Alloy> <Window> <View ns="Ti.Map" id="mapview"> <Annotation title="Cupertino" platform='ios' formFactor='tablet' latitude='37.3231' longitude='-122.0311'/> <Annotation title="Redwood City" platform='ios' formFactor='handheld' latitude='37.4853' longitude='-122.2353'/> <Annotation title="Mountain View" platform='android' latitude='37.3861' longitude='-122.0828'/> <Annotation title="Palo Alto" platform='android,ios,mobileweb' latitude='37.4419' longitude='-122.1419'/> <Annotation title="San Francisco" platform='mobileweb' latitude='37.7750' longitude='-122.4183'/> </View> </Window></Alloy>

[tablet, handheld]

ALLOY TSSPlatform-Specific styles

// iPhone"Label[platform=ios formFactor=handheld]": { backgroundColor: "#f00", text: 'iPhone'},// iPad and iPad mini"Label[platform=ios formFactor=tablet]": { backgroundColor: "#0f0", text: 'iPad'},// Android handheld and tablet devices"Label[platform=android]": { backgroundColor: "#00f", text: 'Android'},// Any Mobile Web platform"Label[platform=mobileweb]": { backgroundColor: "#f0f", text: 'Mobile Web'}

• app◦ assets

■ appicon.png■ background.png

◦ controllers◦ styles

■ index.tss■ window.tss

◦ themes■ mytheme

■ assets■ background.png

■ styles■ app.tss

◦ views■ index.xml■ window.xml

ALLOY TEMAS

BACKBONE NO ALLOY

Models

Mantém o controle dos seus

dados

Collections

Gerencia listas/array desses seus

dados

Sync/Adapters

SQLite, Properties, REST, ACS, CouchDB...

ALLOY

MODELSexports.definition = { config: { "columns": { "title": "String", "author": "String" }, "adapter": { "type": "sql", "collection_name": "books" } }, extendModel: function(Model) { _.extend(Model.prototype, { // extended override or implement Backbone.Model }); return Model; }, extendCollection: function(Collection) { _.extend(Collection.prototype, { // extended override or implement Backbone.Collection }); return Collection; }}

ALLOY

MODELSexports.definition = { config: { "columns": { "title": "String", "author": "String" }, "adapter": { "type": "sql", "collection_name": "books" } }, extendModel: function(Model) { _.extend(Model.prototype, { // extended override or implement Backbone.Model }); return Model; }, extendCollection: function(Collection) { _.extend(Collection.prototype, { // extended override or implement Backbone.Collection }); return Collection; }}

ALLOY

MODELSexports.definition = { config: { "columns": { "title": "String", "author": "String" }, "adapter": { "type": "sql", "collection_name": "books" } }, extendModel: function(Model) { _.extend(Model.prototype, { // extended override or implement Backbone.Model }); return Model; }, extendCollection: function(Collection) { _.extend(Collection.prototype, { // extended override or implement Backbone.Collection }); return Collection; }}

var book = Alloy.createModel('book', {title:'A Game of Thrones', author:'George R.R. Martins'});

book.save();

INSTANCIANDO O

MODEL

var library = Alloy.createCollection('book'); library.fetch(); // Grab data from persistent storage

INSTANCIANDO A

COLLECTION

MAIS

WIDGETS

http://alloylove.com/

DEMO

APPCELERATOR CLOUD SERVICES

Pre-build Web Backend

25+ API

Escalável

SDKs: Titanium, iOS, Android, AS3 e REST

TIERS API

CÓDIGO FONTE

http://github.com/ecavalcanti/

http://www.slideshare.net/ericoc

SLIDES

Obrigado!