SlideShare uma empresa Scribd logo
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
Sharing data between iOS apps
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
Sharing data between iOS apps
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

PDF
Microsoft e Linux: Como e Porquê a Microsoft se aliou ao Software Livre
PDF
TDC 2016 - Animações no iOS
PDF
Cidades Inteligentes
PDF
TDC - Design Invisivel
PPT
O que a IoT Vai Mudar No Mundo dos_Testes
PDF
TDC2016SP - Como aumentar a retenção no seu produto com práticas de Growth H...
PPT
TDC2016SP - Democracia Aberta e Governo Open Source: Tecnologias, Participaçã...
PPT
Tdc2016 eu naogarantoa_qualidade
Microsoft e Linux: Como e Porquê a Microsoft se aliou ao Software Livre
TDC 2016 - Animações no iOS
Cidades Inteligentes
TDC - Design Invisivel
O que a IoT Vai Mudar No Mundo dos_Testes
TDC2016SP - Como aumentar a retenção no seu produto com práticas de Growth H...
TDC2016SP - Democracia Aberta e Governo Open Source: Tecnologias, Participaçã...
Tdc2016 eu naogarantoa_qualidade

Destaque (20)

PDF
Otimizando tempo de build: performance da suíte de testes
PDF
TDC2016SP - Buscas inteligentes para emegencias hospitalares
PDF
TDC2016SP - Trilha Impressão 3D
PDF
TDC2016SP - Trilha Impressão 3D
PDF
TDC2016SP - 3 Razões (e um bônus) para você começar a produzir conteúdo on e ...
PDF
TDC2016SP - Como transformar dados em experiência para o usuário
PDF
TDC2016SP - Design Thinking
PDF
TDC2016SP - Design Thinking
PDF
TDC2016SP - Design Thinking
PDF
O Futuro de Vendas, Marketing e Atendimento ao Cliente
PDF
TDC2016SP - Agile Enterprise Architecture
PDF
TDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
PDF
TDC2016SP - Trilha Impressão 3D
PDF
TDC2016SP - Become a jedi with PHP streams
PDF
TDC2016SP - Design Thinking
PDF
TDC Floripa 2015 - Branding, UX e Marketing
PPT
TDC2016SP - Trilha Mobile
PDF
TDC2016SP - Trilha Node.Js
PPTX
TDC2016SP - Trilha Mobile
PPT
TDC2016SP - Trilha Node.Js
Otimizando tempo de build: performance da suíte de testes
TDC2016SP - Buscas inteligentes para emegencias hospitalares
TDC2016SP - 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 - Como transformar dados em experiência para o usuário
TDC2016SP - Design Thinking
TDC2016SP - Design Thinking
TDC2016SP - Design Thinking
O Futuro de Vendas, Marketing e Atendimento ao Cliente
TDC2016SP - Agile Enterprise Architecture
TDC2016SP - A função dos Business Capabilities na Arquitetura Empresarial
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Become a jedi with PHP streams
TDC2016SP - Design Thinking
TDC Floripa 2015 - Branding, UX e Marketing
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha Node.Js
Anúncio

Semelhante a Sharing data between iOS apps (20)

PPTX
Controlando dispositivos IoT com chatbots inteligentes
PDF
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
PDF
5 coisas que aprendemos blockchain
PDF
Integração com Redes Sociais em Aplicativos Móveis
PDF
Criando uma cultura data driven
PDF
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
PDF
Microsoft e Linux: como e porque a Microsoft se aliou ao software livre
PDF
Palestra Big Data SCTI
PDF
Android things, machine learning e maquinas de doces
PPTX
Herez m kattan_social_networks_meets_software_development-software
PDF
Soluções de IoT usando Google Cloud e Firebase
PDF
Treinamento hadoop - dia1
PPTX
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
PPTX
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
PDF
NTI aula 3
PPTX
Microsoft opensource
 
PPTX
Microsoft opensource
 
PDF
Palestra: Mitos sobre o Linux que afastam novos usuários
ODP
Big Data Latinoware 2014
Controlando dispositivos IoT com chatbots inteligentes
TDC2018FLN | Trilha Testes - 5 coisas que aprendemos blockchain
5 coisas que aprendemos blockchain
Integração com Redes Sociais em Aplicativos Móveis
Criando uma cultura data driven
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
Palestra Big Data SCTI
Android things, machine learning e maquinas de doces
Herez m kattan_social_networks_meets_software_development-software
Soluções de IoT usando Google Cloud e Firebase
Treinamento hadoop - dia1
Segurança em IoT é possível ! Desenvolvimento seguro de dispositivos IoT
Segurança em IoT é possível ! Dicas de desenvolvimento seguro de dispositivo...
NTI aula 3
Microsoft opensource
 
Microsoft opensource
 
Palestra: Mitos sobre o Linux que afastam novos usuários
Big Data Latinoware 2014
Anúncio

Último (7)

PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
Curso de Windows 11 resumido na prática.pptx
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

Sharing data between iOS apps