SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Ingressos  no  pulso
Rodrigo  Borges  
Desenvolvedor  mobile  @  Ingresse
Levando  festas  e  ingressos  para  o  
Apple  Watch
•Startup  de  tecnologia  aplicada  a  eventos  
fundada  em  Manaus/AM  
•Facilitar  a  compra  e  venda  de  ingressos  
online  
•Software  móvel  completo  de  vendas  e  
monitoramento  de  entrada  
•25  milhões  de  reais  processados  em  vendas  
em  2014  
•400  eventos  cadastrados  em  um  mês  
(novembro  de  2014)
Ingresse
• Manauara  
• Formado  em  Ciência  da  Computação  (UFAM)  
• Mestrado  em  Computação  Ubíqua  (UFMG)  
• Desenvolvedor  mobile  na  Ingresse  (Android  &  iOS)  
Rodrigo  Borges  Soares  
@rdgborges  
rodrigo.borges@ingresse.com  
hUps://br.linkedin.com/in/rdgborges  
Ingresse  no  Apple  Watch
• Visualização  de  QR-­‐Codes  dos  
ingressos  do  usuário  
• Visualização  de  informações  dos  
próximos  eventos  na  cidade  
• Notificações  para  rápido  acesso  
aos  ingressos  e  eventos
App  Ingresse  e  Apple  Watch
• A  app  Ingresse  utiliza  quase  
todos  os  recursos  que  o  Apple  
Watch  tem  a  oferecer,  como  
Handoff,  notificações,  Glance,  
App  Groups,  etc.
Desenvolvendo  para  o  Apple  Watch
• Um  app  para  Apple  Watch  é  uma  
Extension  de  uma  app  para  iPhone  
• App  Extensions  é  um  recurso  lançado  
no  iOS  8    
• Widgets  na  central  de  notificações,  
teclados  customizados,  
compartilhamento  em  redes  sociais  e…  
relógios!
Navegação  entre  telas
• Page  based:  Telas  não  
possuem  necessariamente  
relação  entre  si  
• Hierarchical:  Relação  hierárquica  
entre  telas  do  aplicativo
Navegação  hierárquica
[self pushControllerWithName:@"eventDetails" context:eventId];
- (void) awakeWithContext:(id)context {
NSManagedObjectID *objectID = (NSManagedObjectID*) context;
NSManagedObject *eventObject = [managedObjectContext
objectWithID:objectID];
// ...
}
• Chama  a  próxima  tela  do  aplicativo
• Na  nova  tela
Navegação  hierárquica
• awakeWithContext:  Carregar  os  dados  
necessários  e  construir  sua  interface    
• willActivate:  Atualizar  interface  quando  ela  for  
mostrada  novamente  para  o  usuário  (Por  
exemplo,  quando  tela  ativar)
App  Groups:  Compartilhamento  de  dados
• Como  acessar  os  dados  do  app  principal  no  
Apple  Watch?  
• Com  App  Groups,  os  dados  são  salvos  em  um  
contêiner  que  pode  ser  acessado  tanto  do  app  
para  iPhone  quanto  do  Apple  Watch  
• Vale  para  NSUserDefaults  e  também  para  
CoreData!
App  Groups:  Compartilhamento  de  dados
• NSUserDefaults
NSUserDefaults *userDefaults =
[[NSUserDefaults alloc] initWithSuiteName:@"group.ingresse"];
NSURL *appGroupsURL = [[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:@"group.ingresse"];
NSURL *storeURL = [appGroupsURL URLByAppendingPathComponent:@"ingresse.sqlite"];
[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeURL options:nil error:&error]
• CoreData
Notificações
• A  lógica  para  mostrar  
notificações  é  baseada  no  
contexto  do  usuário  
• Notificações  Estáticas  e  
Dinâmicas  
• Limiar  de  tempo  para  carregar  
notificações  dinâmicas
Notificações
- (void) didReceiveLocalNotification:(UILocalNotification*) localNotification
withCompletion:(void (^)(WKUserNotificationInterfaceType)) completionHandler
{
NSString *eventId = [localNotification.userInfo objectForKey:@"eventId"];
}
- (void) didReceiveRemoteNotification:(NSDictionary*) remoteNotification
withCompletion:(void (^)(WKUserNotificationInterfaceType)) completionHandler
{
NSString *eventId = [remoteNotification objectForKey:@"eventId"];
}
• Na  NotificationController:
Glance
• Glances  são  telas  que  mostram  
conteúdo  relevante  das  apps  
instaladas  no  Watch  
• O  conteúdo  deve  ser  rápido  e  fácil  
de  ler  
• Ao  clicar  na  Glance,  usuário  é  
levado  para  a  primeira  tela  do  
aplicativo
Handoff
• Continuidade:  permite  que  ações  
mais  complexas  sejam  
continuadas  no  iPhone  
• Sem  necessidade  de  botão  “Abrir  
no  iPhone”  
• Desenvolvedor  deve  declarar  o  
contexto  de  navegação  para  a  app  
principal
Handoff
• Na  InterfaceController:
Handoff
- (void) willActivate
{
[self updateUserActivity:@"com.ingresse.event.details"
userInfo:@{@"eventId": eventId} webpageURL:nil];
}
• Declarar  um  array  com  nome  “NSUserActivityTypes"  
no  .plist  da  app  principal  
• Adicionar  os  identificadores  das  atividades  no  array  
(Exemplo:  “com.ingresse.event.details”)
• Na  AppDelegate  do  app  principal:
Handoff
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
{
NSDictionary *userInfo = userActivity.userInfo;
NSString *activityType = userActivity.activityType;
NSString *eventId = [userInfo objectForKey:@"eventId"];
if ([activityType isEqualToString:@"com.ingresse.event.details"]) {
}
return YES;
}
Apple  Watch  drops
• É  uma  boa  prática  informar  ao  usuário  para  abrir  o  iPhone  
para  ver  mais  informações  (Handoff).  Nada  de  botão  “Abrir  
no  iPhone”!  
• Tanto  Glances  quanto  notificações  podem  ser  testadas  
utilizando  o  simulador  do  Xcode  
• Os  números  de  Version  e  Build  devem  ser  os  mesmos  na  
app  principal  e  na  app  para  o  Apple  Watch  
• Não  esqueça  de  migrar  seus  dados  para  o  armazenamento  
compartilhado  ao  utilizar  App  Groups  
Referências
• WatchKit  (Apple  Developer).  Seção  sobre  o  Apple  Watch  
do  site  de  desenvolvedores  da  Apple.                                                    
https://developer.apple.com/watchkit/  
• Ingressos  no  pulso  (Medium).  https://medium.com/
@rdgborges/ingressos-­‐no-­‐pulso-­‐5b0b43162709  
• Watch  Aware:  Base  de  dados  de  apps  para  Apple  Watch  
publicadas  na  App  Store  (e  onde  eu  fiz  a  imagem  legal  do  
primeiro  slide  ☺).  http://watchaware.com/  
That’s  all  folks!
Rodrigo  Borges  
Desenvolvedor  mobile  
@rdgborges  
rodrigo.borges@ingresse.com  
hUps://br.linkedin.com/in/rdgborges  
Rodrigo  Maués  
Designer  de  UX  e  desenvolvedor  
mobile  
@rdgmaues  
maues.rodrigo@ingresse.com  
hUps://br.linkedin.com/in/rdgmaues
Marcelo  Bissuh  
Gerente  de  projetos  
@bissuh  
bissuh@ingresse.com  
hUps://br.linkedin.com/in/bissuh

Mais conteúdo relacionado

Semelhante a Ingressos no pulso - Levando festas e ingressos para o Apple Watch

Dê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidDê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidRodolfo Faquin Della Justina
 
Android Wear: Expandindo as funcionalidades do seu Android
Android Wear: Expandindo as funcionalidades do seu AndroidAndroid Wear: Expandindo as funcionalidades do seu Android
Android Wear: Expandindo as funcionalidades do seu AndroidHeider Lopes
 
Introdução Silverlight Windows Phone
Introdução Silverlight Windows PhoneIntrodução Silverlight Windows Phone
Introdução Silverlight Windows PhoneNuno Luz
 
Visão Geral sobre o Application Insights
Visão Geral sobre o Application InsightsVisão Geral sobre o Application Insights
Visão Geral sobre o Application InsightsAndré Dias
 
Android app communication
Android app communicationAndroid app communication
Android app communicationEloi Júnior
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
DevDay 2017 - Belo Horizonte - Application Insights
DevDay 2017 - Belo Horizonte - Application InsightsDevDay 2017 - Belo Horizonte - Application Insights
DevDay 2017 - Belo Horizonte - Application InsightsAndré Dias
 
Geografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localizaçãoGeografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localizaçãoRodrigo Ferreira
 
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
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Apple Watch - Digital Day da CI&T
Apple Watch - Digital Day da CI&TApple Watch - Digital Day da CI&T
Apple Watch - Digital Day da CI&TJuliana Chahoud
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfmbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfWilliam Almeida
 
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013Douglas Drumond
 

Semelhante a Ingressos no pulso - Levando festas e ingressos para o Apple Watch (20)

Dê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidDê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com Android
 
Android Wear: Expandindo as funcionalidades do seu Android
Android Wear: Expandindo as funcionalidades do seu AndroidAndroid Wear: Expandindo as funcionalidades do seu Android
Android Wear: Expandindo as funcionalidades do seu Android
 
Introdução Silverlight Windows Phone
Introdução Silverlight Windows PhoneIntrodução Silverlight Windows Phone
Introdução Silverlight Windows Phone
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Backend
Backend Backend
Backend
 
Android - Notas de aula
Android - Notas de aulaAndroid - Notas de aula
Android - Notas de aula
 
Visão Geral sobre o Application Insights
Visão Geral sobre o Application InsightsVisão Geral sobre o Application Insights
Visão Geral sobre o Application Insights
 
Android app communication
Android app communicationAndroid app communication
Android app communication
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
DevDay 2017 - Belo Horizonte - Application Insights
DevDay 2017 - Belo Horizonte - Application InsightsDevDay 2017 - Belo Horizonte - Application Insights
DevDay 2017 - Belo Horizonte - Application Insights
 
Geografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localizaçãoGeografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localização
 
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
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Apple Watch - Digital Day da CI&T
Apple Watch - Digital Day da CI&TApple Watch - Digital Day da CI&T
Apple Watch - Digital Day da CI&T
 
Phonegap
PhonegapPhonegap
Phonegap
 
Apostilaandroidfatecnormal
ApostilaandroidfatecnormalApostilaandroidfatecnormal
Apostilaandroidfatecnormal
 
Curso Básico Android - Aula 05
Curso Básico Android - Aula 05Curso Básico Android - Aula 05
Curso Básico Android - Aula 05
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfmbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
 
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
 

Mais de Rodrigo Borges

Drag and Drop no iOS 11
Drag and Drop no iOS 11Drag and Drop no iOS 11
Drag and Drop no iOS 11Rodrigo Borges
 
Migrando para o Swift 3
Migrando para o Swift 3Migrando para o Swift 3
Migrando para o Swift 3Rodrigo Borges
 
Notificações no iOS 10
Notificações no iOS 10Notificações no iOS 10
Notificações no iOS 10Rodrigo Borges
 
3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOS3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOSRodrigo Borges
 
Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...
Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...
Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...Rodrigo Borges
 
Um Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes VeicularesUm Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes VeicularesRodrigo Borges
 

Mais de Rodrigo Borges (8)

Drag and Drop no iOS 11
Drag and Drop no iOS 11Drag and Drop no iOS 11
Drag and Drop no iOS 11
 
Migrando para o Swift 3
Migrando para o Swift 3Migrando para o Swift 3
Migrando para o Swift 3
 
Notificações no iOS 10
Notificações no iOS 10Notificações no iOS 10
Notificações no iOS 10
 
3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOS3D Touch: Preparando sua app para o futuro do iOS
3D Touch: Preparando sua app para o futuro do iOS
 
Hello, WWDC 2016!
Hello, WWDC 2016!Hello, WWDC 2016!
Hello, WWDC 2016!
 
Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...
Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...
Em busca de um layout bonito e adaptativo: UICollectionView, Auto Layout e Si...
 
Um Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes VeicularesUm Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
Um Protocolo de Disseminação de Dados Adaptativo para Redes Veiculares
 
Going Mobile
Going MobileGoing Mobile
Going Mobile
 

Ingressos no pulso - Levando festas e ingressos para o Apple Watch

  • 1. Ingressos  no  pulso Rodrigo  Borges   Desenvolvedor  mobile  @  Ingresse Levando  festas  e  ingressos  para  o   Apple  Watch
  • 2. •Startup  de  tecnologia  aplicada  a  eventos   fundada  em  Manaus/AM   •Facilitar  a  compra  e  venda  de  ingressos   online   •Software  móvel  completo  de  vendas  e   monitoramento  de  entrada   •25  milhões  de  reais  processados  em  vendas   em  2014   •400  eventos  cadastrados  em  um  mês   (novembro  de  2014) Ingresse
  • 3. • Manauara   • Formado  em  Ciência  da  Computação  (UFAM)   • Mestrado  em  Computação  Ubíqua  (UFMG)   • Desenvolvedor  mobile  na  Ingresse  (Android  &  iOS)   Rodrigo  Borges  Soares   @rdgborges   rodrigo.borges@ingresse.com   hUps://br.linkedin.com/in/rdgborges  
  • 4. Ingresse  no  Apple  Watch • Visualização  de  QR-­‐Codes  dos   ingressos  do  usuário   • Visualização  de  informações  dos   próximos  eventos  na  cidade   • Notificações  para  rápido  acesso   aos  ingressos  e  eventos
  • 5. App  Ingresse  e  Apple  Watch • A  app  Ingresse  utiliza  quase   todos  os  recursos  que  o  Apple   Watch  tem  a  oferecer,  como   Handoff,  notificações,  Glance,   App  Groups,  etc.
  • 6. Desenvolvendo  para  o  Apple  Watch • Um  app  para  Apple  Watch  é  uma   Extension  de  uma  app  para  iPhone   • App  Extensions  é  um  recurso  lançado   no  iOS  8     • Widgets  na  central  de  notificações,   teclados  customizados,   compartilhamento  em  redes  sociais  e…   relógios!
  • 7. Navegação  entre  telas • Page  based:  Telas  não   possuem  necessariamente   relação  entre  si   • Hierarchical:  Relação  hierárquica   entre  telas  do  aplicativo
  • 8. Navegação  hierárquica [self pushControllerWithName:@"eventDetails" context:eventId]; - (void) awakeWithContext:(id)context { NSManagedObjectID *objectID = (NSManagedObjectID*) context; NSManagedObject *eventObject = [managedObjectContext objectWithID:objectID]; // ... } • Chama  a  próxima  tela  do  aplicativo • Na  nova  tela
  • 9. Navegação  hierárquica • awakeWithContext:  Carregar  os  dados   necessários  e  construir  sua  interface     • willActivate:  Atualizar  interface  quando  ela  for   mostrada  novamente  para  o  usuário  (Por   exemplo,  quando  tela  ativar)
  • 10. App  Groups:  Compartilhamento  de  dados • Como  acessar  os  dados  do  app  principal  no   Apple  Watch?   • Com  App  Groups,  os  dados  são  salvos  em  um   contêiner  que  pode  ser  acessado  tanto  do  app   para  iPhone  quanto  do  Apple  Watch   • Vale  para  NSUserDefaults  e  também  para   CoreData!
  • 11. App  Groups:  Compartilhamento  de  dados • NSUserDefaults NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.ingresse"]; NSURL *appGroupsURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.ingresse"]; NSURL *storeURL = [appGroupsURL URLByAppendingPathComponent:@"ingresse.sqlite"]; [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error] • CoreData
  • 12. Notificações • A  lógica  para  mostrar   notificações  é  baseada  no   contexto  do  usuário   • Notificações  Estáticas  e   Dinâmicas   • Limiar  de  tempo  para  carregar   notificações  dinâmicas
  • 13. Notificações - (void) didReceiveLocalNotification:(UILocalNotification*) localNotification withCompletion:(void (^)(WKUserNotificationInterfaceType)) completionHandler { NSString *eventId = [localNotification.userInfo objectForKey:@"eventId"]; } - (void) didReceiveRemoteNotification:(NSDictionary*) remoteNotification withCompletion:(void (^)(WKUserNotificationInterfaceType)) completionHandler { NSString *eventId = [remoteNotification objectForKey:@"eventId"]; } • Na  NotificationController:
  • 14. Glance • Glances  são  telas  que  mostram   conteúdo  relevante  das  apps   instaladas  no  Watch   • O  conteúdo  deve  ser  rápido  e  fácil   de  ler   • Ao  clicar  na  Glance,  usuário  é   levado  para  a  primeira  tela  do   aplicativo
  • 15. Handoff • Continuidade:  permite  que  ações   mais  complexas  sejam   continuadas  no  iPhone   • Sem  necessidade  de  botão  “Abrir   no  iPhone”   • Desenvolvedor  deve  declarar  o   contexto  de  navegação  para  a  app   principal
  • 17. • Na  InterfaceController: Handoff - (void) willActivate { [self updateUserActivity:@"com.ingresse.event.details" userInfo:@{@"eventId": eventId} webpageURL:nil]; } • Declarar  um  array  com  nome  “NSUserActivityTypes"   no  .plist  da  app  principal   • Adicionar  os  identificadores  das  atividades  no  array   (Exemplo:  “com.ingresse.event.details”)
  • 18. • Na  AppDelegate  do  app  principal: Handoff - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler { NSDictionary *userInfo = userActivity.userInfo; NSString *activityType = userActivity.activityType; NSString *eventId = [userInfo objectForKey:@"eventId"]; if ([activityType isEqualToString:@"com.ingresse.event.details"]) { } return YES; }
  • 19. Apple  Watch  drops • É  uma  boa  prática  informar  ao  usuário  para  abrir  o  iPhone   para  ver  mais  informações  (Handoff).  Nada  de  botão  “Abrir   no  iPhone”!   • Tanto  Glances  quanto  notificações  podem  ser  testadas   utilizando  o  simulador  do  Xcode   • Os  números  de  Version  e  Build  devem  ser  os  mesmos  na   app  principal  e  na  app  para  o  Apple  Watch   • Não  esqueça  de  migrar  seus  dados  para  o  armazenamento   compartilhado  ao  utilizar  App  Groups  
  • 20. Referências • WatchKit  (Apple  Developer).  Seção  sobre  o  Apple  Watch   do  site  de  desenvolvedores  da  Apple.                                                     https://developer.apple.com/watchkit/   • Ingressos  no  pulso  (Medium).  https://medium.com/ @rdgborges/ingressos-­‐no-­‐pulso-­‐5b0b43162709   • Watch  Aware:  Base  de  dados  de  apps  para  Apple  Watch   publicadas  na  App  Store  (e  onde  eu  fiz  a  imagem  legal  do   primeiro  slide  ☺).  http://watchaware.com/  
  • 21. That’s  all  folks! Rodrigo  Borges   Desenvolvedor  mobile   @rdgborges   rodrigo.borges@ingresse.com   hUps://br.linkedin.com/in/rdgborges   Rodrigo  Maués   Designer  de  UX  e  desenvolvedor   mobile   @rdgmaues   maues.rodrigo@ingresse.com   hUps://br.linkedin.com/in/rdgmaues Marcelo  Bissuh   Gerente  de  projetos   @bissuh   bissuh@ingresse.com   hUps://br.linkedin.com/in/bissuh