SlideShare uma empresa Scribd logo
1 de 78
Baixar para ler offline
Compartilhando dados entre
aplicativos
2
twitter: @dchohfi
github: @dchohfi
facebook: @dchohfi
vida: @dchohfi
Diego Chohfi Turini
Miguel Bassila
3
twitter: @miguelbassila
github: @miguelbassila
facebook: @miguelbassila
vida: @miguelbassila
Nubank
4
• Maio de 2013
• Investidores de peso
• Fila de espera gigantesca
• Atendimento++
• Tudo pelo aplicativo
• Cresceu
http://bit.ly/tdc-nubank
6
Cresceu muito
7
• Comunicação entre
apps limitada
• Integração com
sistema mais limitada
ainda
Apps para iOS eram teoricamente simples
8
Briga entre grandes empresas
Trocada por: Briga entre fanboys
9
• Teclado
• Controle de armazenamento
• Home screen customizável
• Aplicativos sem integração
Limitações da plataforma
10
App Extensions
Solução da Apple para os problemas
Preencher gaps da plataforma e aumentar as funcionalidades sem
comprometer segurança e usabilidade
11
App Extensions: a partir do iOS8
diversas funcionalidades adicionadas para a plataforma
Actions
Share
12
Photo editing
App Extensions: a partir do iOS8
diversas funcionalidades adicionadas para a plataforma
13
Keyboard
App Extensions: a partir do iOS8
diversas funcionalidades adicionadas para a plataforma
14
Today extension
App Extensions: a partir do iOS8
diversas funcionalidades adicionadas para a plataforma
15
Vamos fazer uma extension o/
E agora? Como
fazer
17
Novo target
18
Today Extension
19
• Novo target
• ViewController
• Storyboard
• Plist configuração
20
Quem aqui gosta de storyboard?
O @diogot adora
Customizando o comportamento padrão de uma extension
21
• Bundle display name
• NSExtensionMainStoryboard
• NSExtensionPrincipalClass
https://developer.apple.com/library/ios/documentation/General/Reference/
InfoPlistKeyReference/Articles/SystemExtensionKeys.html
com.apple.widget-extension
22
Extension é apenas uma UIViewController
23
Acabou, vocês já sabem como fazer,
flw t+
24
Brinqs rsrs, ainda tem coisa pra fazê
25
Como um objeto ganha
comportamento?
Sua UIViewController precisa implementar um protocolo
para se tornar um widget
26
<NCWidgetProviding>
Sua UIViewController ganha dois métodos opcionais
27
widgetMarginInsetsForProposedMarginInsets:
widgetPerformUpdateWithCompletionHandler:
Cuidados com o ciclo de vida de um widget
28
É parecido com uma UIViewController mas é diferente
:(
NS_EXTENSION_UNAVAILABLE_IOS
29
30
Montar a tela é ok, mas e os dados
vem da onde?
Como acessar os
dados dentro de
uma extension?
32
33
Onde normalmente guardamos os
dados importantes do usuário?
Formas de compartilhar dados entre aplicações
Keychain
Compartilhando informações seguras
35
• Pode compartilhar informações
entre diversos targets
• Não está atrelado a apenas uma
aplicação
Keychain
36
Entitlements
Habilitando Keychain Sharing
37
Habilitando Keychain Sharing
Trabalhar com keychain não é fácil
38
[UICKeyChainStore keyChainStoreWithService:@"br.com.nubank"
accessGroup:@""];
UICKeyChainStore
39
AccessGroup?
UICKeyChainStore
<Bundle Seed ID>.<Bundle Identifier>
>.< que fofo
40
AccessGroup?
UICKeyChainStore
Bundle Identifier: configurado no entitlements
41
Bundle Seed ID
UICKeyChainStore
ABCD12345
42
Agora todos os apps podem
compartilhar os dados sensíveis do
usuário
Keychain
43
E o que não é sensível?
fica onde?
Formas de compartilhar dados entre aplicações
44
Lembra do bambu?
Brincadeira
45
Onde escrevemos dados no app?
Formas de compartilhar dados entre aplicações
AppGroups
47
Entitlements
Habilitando App Groups
48
Agora podemos compartilhar dados :D
NSUserDefault
NSFileManager
49
NSUserDefaults
[[NSUserDefaults alloc] initWithSuiteName:appGroupName];
50
[[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:
appGroupName];
NSFileManager
Agora que compartilhamos os
dados, como compartilhar o
código?
52
Copiar e colar, que
tal?
53
Não né zé
Frameworks
55
Um novo target
56
Um novo target
57
Um novo target
Tipos de frameworks
58
Dynamic Static
• Pode conter assets
• Apenas após iOS8
• Linkado em tempo de
execução
• Mais rápido para compilar
e carregar
• Assets apenas com bundle
• Suporta versões anteriores
ao iOS8
• Precisa recompilar o target
principal a cada mudança
https://pewpewthespells.com/blog/static_and_dynamic_libraries.html
59
Criar o frameworks depois foi uma dor
de cabeça
61
Single Responsibility Principle
62
Trabalhamos com MVC
63
MVC é um cancer, por conter apenas 3
letras
64
Seu modelo é maior do que você
imagina
65
Independente da arquitetura, sempre
vá além das siglas mágicas
Tipos de frameworks
66
O que podemos incluir num Framework?
• Modelos
• Requests
• Armazenamento
• Classes utilitárias
• Categories
O que vimos até agora?
67
Como criar uma extension
Como compartilhar keychain
App groups
Framework para classes compartilhadas
Single responsibility principle
68
Widgets são legais, mas ninguém usa.
iOS 10
70
Foco enorme em
widgets
iOS 10
71
Widgets iOS10
Tamanho único para
compressed
72
Exibido no 3D touch
Notificações
75
Mais extensions
76
Dois novos frameworks/extensions
Texto
grande
UserNotifications.framework
UserNotificationsUI.framework
77
Book a ride
Maps
iMessage
Map Reservation
VOIP
Notification
Sharing data between iOS apps

Mais conteúdo relacionado

Destaque

Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesJônatas Paganini
 
TDC2016SP - Buscas inteligentes para emegencias hospitalares
TDC2016SP - Buscas inteligentes para emegencias hospitalaresTDC2016SP - Buscas inteligentes para emegencias hospitalares
TDC2016SP - Buscas inteligentes para emegencias hospitalarestdc-globalcode
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3Dtdc-globalcode
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3Dtdc-globalcode
 
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...tdc-globalcode
 
TDC2016SP - Como transformar dados em experiência para o usuário
TDC2016SP - Como transformar dados em experiência para o usuárioTDC2016SP - Como transformar dados em experiência para o usuário
TDC2016SP - Como transformar dados em experiência para o usuáriotdc-globalcode
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinkingtdc-globalcode
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinkingtdc-globalcode
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinkingtdc-globalcode
 
O Futuro de Vendas, Marketing e Atendimento ao Cliente
O Futuro de Vendas, Marketing e Atendimento ao ClienteO Futuro de Vendas, Marketing e Atendimento ao Cliente
O Futuro de Vendas, Marketing e Atendimento ao ClienteSalesforce Brasil
 
TDC2016SP - Agile Enterprise Architecture
TDC2016SP - Agile Enterprise ArchitectureTDC2016SP - Agile Enterprise Architecture
TDC2016SP - Agile Enterprise Architecturetdc-globalcode
 
TDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
TDC2016SP - A função dos Business Capabilities na Arquitetura EmpresarialTDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
TDC2016SP - A função dos Business Capabilities na Arquitetura Empresarialtdc-globalcode
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3Dtdc-globalcode
 
TDC2016SP - Become a jedi with PHP streams
TDC2016SP - Become a jedi with PHP streamsTDC2016SP - Become a jedi with PHP streams
TDC2016SP - Become a jedi with PHP streamstdc-globalcode
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinkingtdc-globalcode
 
TDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e MarketingTDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e Marketingleite08
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobiletdc-globalcode
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobiletdc-globalcode
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 

Destaque (20)

Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testes
 
TDC2016SP - Buscas inteligentes para emegencias hospitalares
TDC2016SP - Buscas inteligentes para emegencias hospitalaresTDC2016SP - Buscas inteligentes para emegencias hospitalares
TDC2016SP - Buscas inteligentes para emegencias hospitalares
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3D
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3D
 
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...
 
TDC2016SP - Como transformar dados em experiência para o usuário
TDC2016SP - Como transformar dados em experiência para o usuárioTDC2016SP - Como transformar dados em experiência para o usuário
TDC2016SP - Como transformar dados em experiência para o usuário
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinking
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinking
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinking
 
O Futuro de Vendas, Marketing e Atendimento ao Cliente
O Futuro de Vendas, Marketing e Atendimento ao ClienteO Futuro de Vendas, Marketing e Atendimento ao Cliente
O Futuro de Vendas, Marketing e Atendimento ao Cliente
 
TDC2016SP - Agile Enterprise Architecture
TDC2016SP - Agile Enterprise ArchitectureTDC2016SP - Agile Enterprise Architecture
TDC2016SP - Agile Enterprise Architecture
 
TDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
TDC2016SP - A função dos Business Capabilities na Arquitetura EmpresarialTDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
TDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3D
 
TDC2016SP - Become a jedi with PHP streams
TDC2016SP - Become a jedi with PHP streamsTDC2016SP - Become a jedi with PHP streams
TDC2016SP - Become a jedi with PHP streams
 
TDC2016SP - Design Thinking
TDC2016SP - Design ThinkingTDC2016SP - Design Thinking
TDC2016SP - Design Thinking
 
TDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e MarketingTDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e Marketing
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 

Semelhante a Sharing data between iOS apps

Controlando dispositivos IoT com chatbots inteligentes
Controlando dispositivos IoT com chatbots inteligentesControlando dispositivos IoT com chatbots inteligentes
Controlando dispositivos IoT com chatbots inteligentesAndré Luiz Secco
 
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchainTDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchaintdc-globalcode
 
5 coisas que aprendemos blockchain
5 coisas que aprendemos blockchain5 coisas que aprendemos blockchain
5 coisas que aprendemos blockchaingutssc
 
Integração com Redes Sociais em Aplicativos Móveis
Integração com Redes Sociais em Aplicativos MóveisIntegração com Redes Sociais em Aplicativos Móveis
Integração com Redes Sociais em Aplicativos MóveisGustavo Carvalho
 
Criando uma cultura data driven
Criando uma cultura data drivenCriando uma cultura data driven
Criando uma cultura data drivenGuilherme Brunhole
 
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Alvaro Viebrantz
 
Microsoft e Linux: como e porque a Microsoft se aliou ao software livre
Microsoft e Linux: como e porque a Microsoft se aliou ao software livreMicrosoft e Linux: como e porque a Microsoft se aliou ao software livre
Microsoft e Linux: como e porque a Microsoft se aliou ao software livremarioaxavier7
 
Palestra Big Data SCTI
Palestra Big Data SCTIPalestra Big Data SCTI
Palestra Big Data SCTIBruna Pereira
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Alvaro Viebrantz
 
Herez m kattan_social_networks_meets_software_development-software
Herez m kattan_social_networks_meets_software_development-softwareHerez m kattan_social_networks_meets_software_development-software
Herez m kattan_social_networks_meets_software_development-softwareHerez Moise Kattan
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseAlvaro Viebrantz
 
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoTSegurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoTAnchises Moraes
 
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...Anchises Moraes
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensourceCDS
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensourceCDS
 
Palestra: Mitos sobre o Linux que afastam novos usuários
Palestra: Mitos sobre o Linux que afastam novos usuáriosPalestra: Mitos sobre o Linux que afastam novos usuários
Palestra: Mitos sobre o Linux que afastam novos usuáriosAndre Henrique
 

Semelhante a Sharing data between iOS apps (20)

Controlando dispositivos IoT com chatbots inteligentes
Controlando dispositivos IoT com chatbots inteligentesControlando dispositivos IoT com chatbots inteligentes
Controlando dispositivos IoT com chatbots inteligentes
 
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchainTDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
 
5 coisas que aprendemos blockchain
5 coisas que aprendemos blockchain5 coisas que aprendemos blockchain
5 coisas que aprendemos blockchain
 
Integração com Redes Sociais em Aplicativos Móveis
Integração com Redes Sociais em Aplicativos MóveisIntegração com Redes Sociais em Aplicativos Móveis
Integração com Redes Sociais em Aplicativos Móveis
 
Criando uma cultura data driven
Criando uma cultura data drivenCriando uma cultura data driven
Criando uma cultura data driven
 
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
 
Microsoft e Linux: como e porque a Microsoft se aliou ao software livre
Microsoft e Linux: como e porque a Microsoft se aliou ao software livreMicrosoft e Linux: como e porque a Microsoft se aliou ao software livre
Microsoft e Linux: como e porque a Microsoft se aliou ao software livre
 
Palestra Big Data SCTI
Palestra Big Data SCTIPalestra Big Data SCTI
Palestra Big Data SCTI
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces
 
Herez m kattan_social_networks_meets_software_development-software
Herez m kattan_social_networks_meets_software_development-softwareHerez m kattan_social_networks_meets_software_development-software
Herez m kattan_social_networks_meets_software_development-software
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e Firebase
 
Treinamento hadoop - dia1
Treinamento hadoop - dia1Treinamento hadoop - dia1
Treinamento hadoop - dia1
 
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoTSegurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
 
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
 
NTI aula 3
NTI aula 3NTI aula 3
NTI aula 3
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensource
 
Microsoft opensource
Microsoft opensourceMicrosoft opensource
Microsoft opensource
 
Palestra: Mitos sobre o Linux que afastam novos usuários
Palestra: Mitos sobre o Linux que afastam novos usuáriosPalestra: Mitos sobre o Linux que afastam novos usuários
Palestra: Mitos sobre o Linux que afastam novos usuários
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Big Data Latinoware 2014
Big Data Latinoware 2014Big Data Latinoware 2014
Big Data Latinoware 2014
 

Sharing data between iOS apps