Visão geral do editor de extensão

Uma extensão do Firebase executa uma tarefa específica ou um conjunto de tarefas em resposta a solicitações HTTP ou acionando eventos de outros produtos do Firebase e do Google, como Firebase Cloud Messaging, Cloud Firestore ou Pub/Sub.

Você pode criar sua própria extensão para uso pessoal ou para compartilhar com o mundo no Firebase Extensions Hub. Por exemplo, sua extensão pode executar uma tarefa específica que seu aplicativo precisa regularmente ou pode facilitar o acesso a uma das APIs da sua empresa. Depois de criar sua extensão, você poderá compartilhá-la com outras pessoas. Esses usuários podem instalar e configurar a extensão para uso em seus próprios projetos do Firebase.

Estrutura de uma extensão

Você pode pensar em uma extensão como tendo três componentes principais:

  • Código do Cloud Functions, em JavaScript ou TypeScript
  • Metadados que descrevem sua extensão
  • Documentação para ajudar seus usuários a configurar e usar sua extensão

Para desenvolver uma extensão, você reúne esses componentes na seguinte estrutura:

example-extension
├── functions
│   ├── integration-tests
│   │   ├── extensions
│   │   │   └── example-extension.env
│   │   ├── firebase.json
│   │   └── integration-test.spec.js
│   ├── index.js
│   └── package.json
├── README.md
├── PREINSTALL.md
├── POSTINSTALL.md
├── CHANGELOG.md
├── icon.png
└── extension.yaml
  • O diretório functions contém o código do Cloud Functions em JavaScript ou TypeScript. Este é o código que executa as tarefas da extensão em resposta a eventos acionados pelo Firebase e pelos serviços do Google.
  • O arquivo extension.yaml contém metadados sobre sua extensão, como seus gatilhos e funções de acesso do IAM, bem como quaisquer parâmetros que você deseja que sejam configuráveis ​​pelo usuário.
  • Os arquivos PREINSTALL , POSTINSTALL e CHANGELOG são a documentação mínima que sua extensão deve ter. Esses arquivos ajudam seus usuários a saber o que sua extensão faz, como usá-la e quais atualizações você fez. Você também deve fornecer um ícone para ajudar os usuários a reconhecer sua extensão. O console do Firebase, a Firebase CLI e o Extensions Hub exibem o conteúdo desses arquivos quando os usuários exploram, instalam e gerenciam sua extensão.

Depois de criar sua extensão, você poderá usar a Firebase CLI para instalá-la em um projeto ou publicá-la no Extensions Hub, onde qualquer pessoa poderá descobri-la e instalá-la em seus projetos.

Com quais produtos minha extensão pode interagir?

Como uma extensão do Firebase funciona usando o Cloud Functions, você pode pensar na questão das possíveis integrações de duas maneiras: Quais produtos podem acionar as funções da minha extensão? e Uma vez acionadas, com quais produtos as funções da minha extensão podem interagir?

Gatilhos de função suportados

Gatilhos manuais

Primeiro de tudo, você pode acionar manualmente uma função. As extensões do Firebase e o Cloud Functions oferecem suporte a duas maneiras de acionar funções manualmente:

  • Gatilhos HTTP: implemente uma função em um endpoint HTTP
  • Funções que podem ser chamadas: chame suas Cloud Functions diretamente do código do cliente iOS, Android ou Web, usando os SDKs do cliente Firebase.

Ao expor pontos de extremidade HTTP da sua extensão, ela pode potencialmente integrar-se a qualquer serviço web que suporte webhooks. Com funções que podem ser chamadas, os usuários que instalam sua extensão podem usar os SDKs do Firebase como uma biblioteca cliente para acessar a API que sua extensão implementa.

Gatilhos de serviço do Firebase

A maioria dos produtos Firebase emite eventos que podem acionar o Cloud Functions de uma extensão.

  • Analytics: aciona funções quando o Analytics registra um evento
  • App Distribution: aciona funções quando o App Distribution aciona um alerta
  • Autenticação: aciona funções quando usuários criam e excluem contas
  • Cloud Firestore: aciona funções quando páginas são criadas, atualizadas ou excluídas
  • Cloud Storage : aciona funções quando objetos são carregados, arquivados ou excluídos de buckets
  • Crashlytics: aciona funções quando o Crashlytics aciona um alerta
  • Monitoramento de desempenho: aciona funções quando o Monitoramento de desempenho aciona um alerta
  • Realtime Database: aciona funções quando os dados são criados, atualizados ou excluídos
  • Configuração remota: aciona funções quando um parâmetro é atualizado
  • Test Lab: aciona funções quando o Test Lab aciona um alerta

Gatilhos de serviço do Google Cloud

Uma extensão também pode incluir funções que acionam vários serviços do Google Cloud que não são do Firebase:

  • Cloud Pub/Sub : uma extensão pode incluir funções que são acionadas quando eventos são postados em um tópico configurável do Pub/Sub.
  • Cloud Scheduler : uma extensão pode incluir funções que são executadas em uma programação definida
  • Cloud Tasks : uma extensão pode incluir funções que podem ser enfileiradas usando Cloud Tasks. O Firebase Extensions usa esse recurso para permitir que você, como autor da extensão, escreva funções que respondam aos eventos do "ciclo de vida" de uma extensão: ser instalada em um projeto pela primeira vez, ser atualizada para uma nova versão e ser reconfigurada.
  • Eventarc : uma extensão pode incluir funções que são acionadas quando eventos são publicados em um canal configurável do Eventarc; por outro lado, uma extensão pode publicar seus próprios eventos em um canal Eventarc para permitir que os usuários definam suas próprias funções que são acionadas a partir dos eventos de uma extensão .

Suportado por funções

Depois que o Cloud Function de uma extensão é acionado, a gama de integrações possíveis geralmente fica aberta. Aqui estão alguns destaques do que você pode fazer em uma função do Cloud:

  • Leia, escreva e interaja de outra forma com qualquer serviço do Firebase ou do Google Cloud que use uma função do IAM compatível .
  • Trabalhe com qualquer serviço de terceiros que forneça uma API web.
  • Trabalhe com seus serviços personalizados se você fornecer uma API web.
  • Execute a maioria das bibliotecas JavaScript, incluindo TensorFlow.js , Express.js e assim por diante.

Como construir uma extensão

O tutorial de introdução orienta você no processo de criação, teste e publicação de uma extensão completa e é a maneira recomendada de aprender como criar uma.

Iniciar

Depois de ler o guia de primeiros passos uma vez, você poderá consultar os guias de tópicos individuais, que explicam cada uma das tarefas envolvidas na construção de sua própria extensão: