● Sejam excelentes uns para os outros ● Fale mais alto se vir ou ouvir alguma coisa ● O assédio não é tolerado ● Pratique "Sim e" um ao outro Código de conduta Mais informações: http://bit.ly/2IhF0l3
Andres-Leonardo Martinez-Ortiz Google Carlos Mota Formador Renato Almeida Formador @davilagrau @cafonsomota @tallnato Equipa Daniela Ferreira Gestora de comunidades
● 12 aulas ● 1h30 cada aula ● ~1 aula por semana ● 14 Outubro a 16 Dezembro ● YouTube live ● Suporte assíncrono contínuo via Discord/email ● Todo o código disponível no GitHub Photo by Arif Riyanto on Unspla O programa
#0 14 de Outubro Pronto para começar #1 21 de Outubro Bem-vindos ao Android #2 28 de Outubro Fundações I #3 04 de Novembro Fundações II #4 11 de Novembro Fundações III #5 18 de Novembro Listas, listas e mais listas #6 25 de Novembro Jetpack, Jetpack, Jetpack! #7 - #8 02 - 03 de Dezembro Firebase #9 - #10 09 - 10 de Dezembro MLKit & TensorFlow #11 16 de Dezembro Resumo Semana Semana Calendário ✅ ✅ ✅ ✅ Direto ✅ ✅ ✅
Constrói melhores aplicações Cloud Firestore Armazena e sincroniza dados a uma escala global Firebase ML Machine learning para programadores Cloud Functions Corre código de servidor sem gerir servidores Authentication Autentica utilizadores de forma simples e segura Hosting Distribui recursos web rapidamente e com segurança Cloud Storage Armazena e distribui ficheiros à escala da Google Realtime Database Armazena e sincroniza dados da aplicação em segundos
Melhora a qualidade da aplicação Crashlytics Prioritiza e resolve problemas com relatórios poderosos e em tempo real Performance Monitoring Obtém informações sobre o desempenho da aplicação Test Lab Testa a tua aplicação em dispositivos alojados pela Google App Distribution Distribuí versões de pré-lançamento da aplicação a utilizadores específicos
Cresce o teu negócio In-App Messaging Envolve os utilizadores activos com mensagens contextuais Google Analytics Obtém métricas gratuitas e ilimitadas Predictions Segmentação inteligente de utilizadores baseada no comportamento previsto A/B Testing Optimiza a experiência da aplicação através de experimentação Cloud Messaging Envia mensagens e notificações direcionadas Remote Config Modifica a tua aplicação sem lançar uma nova versão Dynamic Links Impulsiona o crescimento utilizado links directos
FirebaseUI Authentication ● Suporta: ○ E-mail e palavra-chave ○ Integração com Google, Apple, Facebook, Twitter e GitHub ○ Autenticação via o número de telemóvel (SMS) ○ Integração com sistemas de autenticação externos ○ Autenticação anónima Diferentes formas de te autenticares
FirebaseUI Authentication ● Solução completa de UI ○ É a forma recomendada para implementares o teu ecrã de login ● Não precisas de te preocupar com nada ○ Todos os fluxos de autenticação já se encontram implementados ○ Só precisas de implementar a ação de clique no botão
Realtime database Cloud Firestore Atualizações em tempo real ✅ ✅ Suporte offline ✅ ✅ Presença ✅ ❌ Modelo de dados JSON Collections Pesquisa Limitada Permite filtros mais avançados Performance Regional Mundial Escalabilidade <200.000 ligações simultâneas Automática
● O Cloud storage é um serviço de armazenamento poderoso, simples e barato desenvolvido para a escala da Google ● Os SDK’s disponíveis adicionam a segurança da Google para as transferências dos ficheiros ● É possível armazenar imagens, áudios, vídeos ou outros tipos de conteúdos Cloud Storage
● Ativar o Storage na plataforma ● Escolher a localização do bucket. ○ Devemos escolher sempre a localização mais próxima dos nossos utilizadores. Antes de começar
// Aponta para a referência raiz storageRef = storage.reference // Aponta para a pasta "images" imagesRef = storageRef.child("images") // Aponta para o ficheiro "images/space.jpg" val fileName = "space.jpg" spaceRef = imagesRef.child(fileName) // O caminho é "images/space.jpg" val path = spaceRef.path // O nome do ficheiro é "space.jpg" val name = spaceRef.name // Aponta para "images" imagesRef = spaceRef.parent Como utilizar? Utilizar referência
imageRef = storageRef.child("images/image.jpg") val localFile = File.createTempFile("images", "jpg") islandRef.getFile(localFile).addOnSuccessListener { // Ficheiro no armazenamento interno criado }.addOnFailureListener { // Caso de erro } Como utilizar? Transferir um ficheiro para o armazenamento interno
var file = Uri.fromFile(File("/storage/emulated/0/Download/fifi.jpg")) val riversRef = storageRef.child("images/${file.lastPathSegment}") uploadTask = riversRef.putFile(file) // Registar para ser notificado quando a transferência é terminada, ou ocorre um erro uploadTask.addOnFailureListener { // Quando ocorre um erro }.addOnSuccessListener { taskSnapshot -> // Quando a transferência é terminada com sucesso // taskSnapshot.metadata contém metadados tais como o tamanho, tipo de conteúdo, etc // ... } Como utilizar? Enviar um ficheiro
● Relatórios de falhas completos e em tempo real ● Permite encontrar rapidamente a causa das falhas ● As falhas são priorizadas de forma a permitir identificar o que corrigir primeiro ● Alertas em tempo real Crashlytics
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' // ou plugins { id 'com.android.application' id 'kotlin-android' id 'com.google.gms.google-services' id 'com.google.firebase.crashlytics' } Como utilizar? Importar a biblioteca app/build.gradle
// Set a key to a string. FirebaseCrashlytics.getInstance().setCustomKey("str_key", "hello") // Set a key to a boolean. FirebaseCrashlytics.getInstance().setCustomKey("bool_key", true) // Set a key to an int. FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1) // Set a key to an long. FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1L) // Set a key to a float. FirebaseCrashlytics.getInstance().setCustomKey("float_key", 1.0f) // Set a key to a double. FirebaseCrashlytics.getInstance().setCustomKey("double_key", 1.0) E ainda... Chaves custom
● Mede automaticamente o tempo de arranque da aplicação, pedidos HTTP à rede, entre outros ● Permite observar situações em que a aplicação possa ser mais rápida ● Permite customizar os parâmetros a monitorizar da aplicação Performance
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.firebase-perf' // ou plugins { id 'com.android.application' id 'kotlin-android' id 'com.google.gms.google-services' id 'com.google.firebase.firebase-perf' } Como utilizar? Importar a biblioteca app/build.gradle
● Enviar notificações ou mensagens com dados ● Permite direcionar as notificações para diferentes utilizadores de forma versátil ● Permite enviar mensagens através dos clientes Push Notifications
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // ou plugins { id 'com.android.application' id 'kotlin-android' id 'com.google.gms.google-services' } Como utilizar? Importar a biblioteca app/build.gradle
● Camada sobre Google Analytics ● Solução de analytics grátis e ilimitada ● Permite reportar até 500 eventos distintos ● Os relatórios ajudam a perceber o como os utilizadores se comportam, o que permite tomar decisões informadas sobre marketing e otimizações de performance Analytics
Biblioteca que permite através das Google Developers Tools do Chrome, aceder à base de dados, pedidos de rede, etc, tudo através do browser. https://github.com/facebookarchive/stetho