SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
Desenvolvendo para
iPad
Apps Corporativas com Elegância
Felipe Cypriano
iPad
• 9,7” LED Display com
IPS
• 1024 x 768 px de
resolução
• 1Ghz Apple A4
• 256mb de RAM
Mercado
2%
2%
95%
iPad Global Market Share
Strategic Analytics 3ºT 2010
Qual tablet pretende comprar
Pesquisado por ChangeWave nos EUA
Faça Apps lindas
Interfaces mais realistas no iPad
A percepção de valor da informação digital é maior
Cuidado para não exagerar
iPhone vs iPad
• Mail no iPhone
• Hierarquia de
vários níveis
iPhone vs iPad
• Mail no iPad
• Tela única com o
mínimo de mudanças
no contexto
• Poucos níveis de
hierarquia
O Ícone
O Ícone
O Ícone
O Ícone
O Ícone
PNG Original
O Ícone
PNG Original
Efeitos
Automáticos
Controles Tamanho “Ponta do Dedo”
• Dedos não são precisos
como ponteiros do
mouse
• Um mínimo ideal é uma
área de 44 x 44 pixels
• Boa separação entre os
elementos
Sem Amnésia
• A última tela que o usuário estava usando
deve ser lembrada e reaberta
Sem Amnésia
• Salve cedo, salve constantemente
Commit early, commit often
Sem Amnésia
• A qualquer momento um aplicativo pode
ser informado que vai ser fechado
Sem Amnésia
• A qualquer momento um aplicativo pode
ser informado que vai ser fechado
Não há nada que você
possa fazer para impedir
Orientações
• Manter foco no conteúdo principal
• Não fazer mudanças radicais no layout
• Evitar entrada de dados textuais
(nos dois sentidos)
Launch Image
Launch Image
Objective-C
• 1984
• Dynamic method dispatch
• Runtime decision making
• Runtime class extensions
Objective-C
@interface Pessoa: NSObject {
NSString *nome;
int idade;
}
+ (Pessoa *) initWithNome:(NSString *)oNome;
@end
Pessoa.h
Objective-C
Pessoa.m
@implementation Pessoa
+ (Pessoa *) initWithNome:(NSString *)oNome {
if (self = [super init]) {
nome = oNome;
[nome retain];
}
return self;
}
@end
Objective-C
Pessoa *alguem = [Pessoa alloc];
[alguem initWithNome:@“NSString literal”];
Nada de Garbage Collector no iOS
Contagem de Referência
• O runtime monitora o “retain count”
• Todo objeto é criado com retain count de 1
• Precisa do objeto? [objeto retain];
• Não precisa mais? [objeto release];
OutraClasse
OutraClasse
OutraClasse
Persistindo Dados no iOS
Property List
• Pequenas quantidades de dados
• XML ou binário
• Somente tipos básicos
• NSUserDefaults e Settings
Quando Não Usar Property List
• Objetos complexos
• Objetos customizados
• Mais de algumas centenas de KB
• Carregar um plist é tudo-ou-nada
• Múltiplas escritas (não ACID)
SQLite
• Banco de dados SQL completo em um arquivo
• Vem por padrão no iOS
• Simples, rápido e fácil
Quando Não usar SQLite
• Aplicações cliente/servidor
• Com muita concorrência
• Muitos gigabytes de dados
Quando Não usar SQLite
• Aplicações cliente/servidor
• Com muita concorrência
• Muitos gigabytes de dados
Não se aplica ao iPad
Quando Não usar SQLite no iOS
• Se você não gostar de usar API em C
Quando Não usar SQLite no iOS
• Se você não gostar de usar API em C
int sqlite3_open(const char *filename, sqlite3 **db);
int sqlite3_exec(sqlite3 *db, const char *sql,
int (*callback)(void*,int,char**,char**),
void *context, char **error);
Core Data
• Framework de persistência
• Persiste os dados no SQLite ou binário
Comunicação pela internet
Como obter dados do sistema legado
XML
• NSXMLParser
• API orientada à eventos: mais simples
• libxml2
• Toda a árvore é carregada em memória
• API em C: rápida e consumo menor de memória
• Complexa para gerenciar estado
JavaScript Object Notation
• Mais leve que XML
• json-framework, um wrapper open source
para Objective-C
Web Service com SOAP/WSDL
• Sem suporte oficial
• Mais pesado tanto em CPU quanto em
rede
• Duas opções:
• Na mão, criando XML e headers
• wsdl2objc, biblioteca open source
Links
• json-framework: http://code.google.com/p/
json-framework/
• wsdl2objc: http://code.google.com/p/
wsdl2objc/
• Event-Driven XML Guide: http://bit.ly/ios-
event-drive-xml
Mac OS X
iOS SDK
Cocoa Touch Framework
iOS SDK
Cocoa Touch Framework
XCode
iOS SDK
Cocoa Touch Framework
Interface Builder
XCode
iOS SDK
Cocoa Touch Framework
Instruments
Interface Builder
XCode
iOS SDK
Cocoa Touch Framework
Instruments
iPhone Simulator
Interface Builder
XCode
1. Desenvolver
2.Testar
3. Distribuir
Grátis1. Desenvolver
2.Testar
3. Distribuir
iOS Developer Program
iOS Developer Program
US$ 99 / ano
2.Testar
3. Distribuir na App Store
App Store
• Total controle sobre o preço
• Divisão de 70/30 da receita
• Apps grátis não pagam nada a mais
• Sem custos de host, pagamento com cartão
nem marketing
App Store
App Store
A Apple tem que autorizar sua app
App Store
A Apple tem que autorizar sua app
App Store Review Guidelines
http://developer.apple.com/appstore/guidelines.html
iOS Enterprise Program
iOS Enterprise Program
US$ 299 / ano3. Distribuição interna
Mais informações
http://developer.apple.com/
http://www.delicious.com/fmcypriano/objective-c/
http://cocoadevcentral.com/d/learn_objectivec/
@fmcypriano
Felipe Cypriano
felipe@wdev.com.br
me@felipecypriano.com
Perguntas?
Obrigado

Weitere ähnliche Inhalte

Ähnlich wie Desenvolvendos Apps para iPad - TDC 2010

Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupAndré Cruz
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacAndre Baltieri
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Rafael Winter
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google CloudAlvaro Viebrantz
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
Treinamento Windows Phone
Treinamento Windows PhoneTreinamento Windows Phone
Treinamento Windows PhoneMario Pimentel
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterPedro Junior
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
C Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaC Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaCDS
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de MemóriaCDS
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento MobileElton Minetto
 
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2 DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2 Vic Fernandes
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 

Ähnlich wie Desenvolvendos Apps para iPad - TDC 2010 (20)

Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon Meetup
 
Introducao+ao+amazon+ec2+ +ricardo+geh
Introducao+ao+amazon+ec2+ +ricardo+gehIntroducao+ao+amazon+ec2+ +ricardo+geh
Introducao+ao+amazon+ec2+ +ricardo+geh
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no Mac
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud Computing
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Treinamento Windows Phone
Treinamento Windows PhoneTreinamento Windows Phone
Treinamento Windows Phone
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniter
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
C Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaC Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de Memória
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de Memória
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2 DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 

Desenvolvendos Apps para iPad - TDC 2010