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
7
• Comunicação entre apps limitada
• Integração com sistema mais limitada ainda
Apps para iOS eram teoricamente simples
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
14
Today extension
App Extensions: a partir do iOS8 diversas funcionalidades adicionadas para a plataforma
Customizando o comportamento padrão de uma extension
21
• Bundle display name
• NSExtensionMainStoryboard
• NSExtensionPrincipalClasshttps://developer.apple.com/library/ios/documentation/General/Reference/
InfoPlistKeyReference/Articles/SystemExtensionKeys.html
com.apple.widget-extension
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
33
Onde normalmente guardamos os dados importantes do usuário?
Formas de compartilhar dados entre aplicações
35
• Pode compartilhar informações entre diversos targets
• Não está atrelado a apenas uma aplicação
Keychain
50
[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:appGroupName];
NSFileManager
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
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
76
Dois novos frameworks/extensions
Texto grande
UserNotifications.framework
UserNotificationsUI.framework