O documento discute como desenvolver aplicativos para iOS e Mac de forma performática e com sincronização eficiente de dados. Ele fornece dicas sobre APIs, armazenamento em cache, uso de operações assíncronas e frameworks como Cocos2D para desenvolvimento de jogos.
1. iOS, APIs, performance
e sincronização de
dados
Maurício Linhares - @mauriciojr
http://techbot.me/
sábado, 10 de setembro de 2011
2. WHO?
• GUJeiro de raiz - 01/2005
• Ruby, Objective-C, Java e Scala developer na
http://officedrop.com/
• Nas horas vagas escreve no blog, grava
screencasts e joga boardgames europeus;
sábado, 10 de setembro de 2011
3. Como entramos no
mercado?
• Aplicação pra iPad a época do lançamento
do primeiro iPad;
• Aplicação pra Mac á época do lançamento
da Mac App Store;
• Aplicação pra iPhone (recente);
sábado, 10 de setembro de 2011
8. Em números
• Primeiros dois meses da aplicação pra iPad,
45% de crescimento em sign ups a cada
mes;
• Primeiros dois meses do ScanDrop for the
Mac, 13% de crescimento;
• Primeiros dois meses de aplicação pra
Android, 14% de crescimento;
• Primeiros dois meses de lançamento da
aplicação pra iPhone, 51% de crescimento;
sábado, 10 de setembro de 2011
9. E tem mais?
• A mídia americana (nosso mercado
principal) adora Macs;
• Todos os reviews das aplicações desktop
pra Windows (temos duas) reclamavam da
inexistência do Mac;
• Se você tem versão pra Mac e iOS, as
pessoas falam de você com mais facilidade;
sábado, 10 de setembro de 2011
10. Plataforma
• Desenvolvimento usando XCode;
• Em Objective-C, C e C++;
• Ambiente de desenvolvimento exclusivo
para o Mac (mas é possível compilar no
Linux);
sábado, 10 de setembro de 2011
13. Performance real e
performance percebida
são muito importantes
sábado, 10 de setembro de 2011
14. Construir uma
aplicação performática
começa na construção
da sua API
sábado, 10 de setembro de 2011
15. Dicas de performance
de aplicações web
também funcinonam
aqui
Far future expires header, caching, conditional get, etags
mas o seu cliente deve suportar isso, como o
ASIHttpRequest
sábado, 10 de setembro de 2011
16. Se você usa um storage
restrito, não faça
redirect, faça proxying
Como S3 com signed URLs
sábado, 10 de setembro de 2011
17. Exemplo com S3
location ~* "^/s3_redirect/(.*)" {
resolver 8.8.8.8;
internal;
proxy_max_temp_file_size 0;
proxy_set_header Authorization '';
# Download the file and send it to client
proxy_pass http://s3.amazonaws.com/$1?$args;
}
sábado, 10 de setembro de 2011
18. Evite usar formatos
binários
Thrift e Prococol buffer? Tô fora!
sábado, 10 de setembro de 2011
19. Prefira JSON a XML
como formato de
mensagens
E evolua a sua API com bem menos dores de cabeça
sábado, 10 de setembro de 2011
20. Procure enviar todos
os dados necessários
de cada chamada
{ activity : {
comment : “Objective-C is cool!”,
user : {
username : “cocoahead”,
profile_picture : “/images/cocoahead.jpeg” }
}
}
sábado, 10 de setembro de 2011
21. Dados relacionados,
como fotos, devem
sempre ter um
updated_at
{ artist : {
name : “John Doe”,
cover_image : “/images/artists/john_doe.jpeg”,
cover_updated_at : “2011-09-07T20:36:22Z”
}
}
sábado, 10 de setembro de 2011
22. Mantenha um cache
dos arquivos
relacionados
localmente
NSSearchPathForDirectoriesInDomains
( NSDocumentDirectory, NSUserDomainMask,YES );
sábado, 10 de setembro de 2011
23. Use SQLite pra gravar
os dados relacionados,
mas grave os arquivos
em disco
sábado, 10 de setembro de 2011
24. Crie uma Entity no
Core Data com os
atributos sourceType e
sourceId
sábado, 10 de setembro de 2011
34. Por que não usar
NSThread diretamente?
Por que o seu código pode fazer uso do Grand Central
Dispatch se ele estiver disponível
sábado, 10 de setembro de 2011
35. Desenvolvimento de
jogos com Cocos2D e
Cocos3D
Mate a sua vontade de criar o próximo Angry Birds
sábado, 10 de setembro de 2011