Configurar um domínio personalizado para Dynamic Links

Tenha mais controle da marca dos seus Dynamic Links usando seu próprio domínio em vez de um subdomínio page.link. Com domínios personalizados, é possível criar Dynamic Links como os exemplos a seguir:

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

A parte do URL antes de link-suffix é chamada de prefixo de URL e contém seu domínio de link dinâmico personalizado e um prefixo de caminho. Você precisará fornecer um prefixo de URL ao criar Dynamic Links.

A configuração de um domínio personalizado exige permissão de Editor ou Proprietário no seu projeto do Firebase.

Como usar seu domínio da Web para Dynamic Links

É possível usar o mesmo domínio para seus Dynamic Links e páginas da Web, links universais e links de apps. Mas se você fizer isso, será necessário prevenir que os URLs do seu Dynamic Link não entrem em conflito com os URLs da Web. Quando você configura o Dynamic Links para usar um prefixo de URL específico, todos os URLs que começam com esse prefixo são tratados como Dynamic Links. Dessa forma, não é possível usar URLs com esse prefixo para direcionar ao conteúdo hospedado comum.

Por exemplo, se você quiser criar um Dynamic Link para o recurso https://example.com/my-resource (uma página da Web, um link universal ou um link de app), não será possível usar https://example.com/ como o prefixo de URL dos Dynamic Links, porque isso faria com que https://example.com/my-resource fosse tratado como um Dynamic Link. Em vez disso, será necessário usar um prefixo de URL com um domínio diferente ou um prefixo de caminho diferente.

Portanto, os seguintes Dynamic Links de formato longo, bem como os links curtos equivalentes, não funcionarão como pretendido, porque os URLs especificados pelo parâmetro link começam com o prefixo de URL do Dynamic Link, https://example.com/:

 https://example.com/?link=https://example.com/my-resource
 https://example.com/?link=https://example.com/resources/my-resource

No entanto, os seguintes Dynamic Links de formato longo, bem como os links curtos equivalentes, podem funcionar, porque os prefixos de URL não entram em conflito com os URLs link:

 https://link.example.com/?link=https://example.com/my-resource
 https://example.com/links/?link=https://example.com/my-resource
 https://ex.amp.le/?link=https://example.com/my-resource

Configurar um domínio personalizado no Console do Firebase

Geralmente, é possível configurar completamente um domínio personalizado no Console do Firebase. Para fazer isso, siga estas etapas:

  1. Se você não configurou o Firebase Hosting para o projeto, abra a página do Hosting do Console do Firebase, clique em Começar e siga as instruções de configuração. Não é necessário concluir as etapas indicadas no momento.

  2. Abra a página Dynamic Links do Console do Firebase.

  3. Se você não usou Dynamic Links antes, clique em Começar. Caso contrário, clique em Adicionar prefixo de URL no menu suspenso.

    Em seguida, conclua o assistente de configuração, especificando o domínio e o prefixo de caminho que você quer usar quando for solicitado.

  4. Somente iOS: no arquivo Info.plist do projeto Xcode, crie uma chave chamada FirebaseDynamicLinksCustomDomains e faça a configuração dela para os prefixos de URL dos Dynamic Links do app. Exemplo:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/link</string>
      <string>https://example.com/promos</string>
    </array>
    

Configurar um domínio personalizado manualmente

Em algumas situações, como quando você já tem um domínio personalizado configurado para Dynamic Links e quer adicionar outro domínio, ou quando você está adicionando um domínio já conectado a um site do Hosting, é necessário configurar seu domínio personalizado manualmente.

Para fazer isso:

  1. Conecte o domínio ao Firebase Hosting, caso ainda não tenha feito isso.

    A configuração do domínio com o Firebase Hosting inclui a criação do arquivo de configuração firebase.json no diretório do projeto local.

  2. Atualize para a versão mais recente da CLI do Firebase (6.5.0 ou posterior).

  3. Configure o site do Hosting para Dynamic Links no arquivo firebase.json do projeto. Caso seu projeto tenha vários sites, configure o site conectado com o domínio que você quer usar.

    • Defina appAssociation como AUTO. Essa configuração permite que o Hosting gere dinamicamente arquivos assetlinks.json e apple-app-site-association quando são solicitados.

    • Para especificar os prefixos de caminho que você quer usar para os Dynamic Links, estabeleça as regras de substituição com dynamicLinks definido como true. As solicitações para esses caminhos são encaminhadas por proxy para os Dynamic Links.

      Ao contrário das regras que substituem caminhos por URLs, as regras de substituição de Dynamic Links não podem conter expressões regulares.

      Se você tiver várias regras de substituição para seu site, saiba que o Hosting executa a primeira regra de reconfiguração que corresponder à solicitação.

    Exemplo:

    "hosting": {
      // ...
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/promos/**",
          "dynamicLinks": true
        },
        {
          "source": "/links/share/**",
          "dynamicLinks": true
        }
      ]
    }
    

    Com a configuração acima, é possível criar Dynamic Links com prefixos de URL, como os exemplos a seguir:

    https://your-domain/promos/link-suffix
    https://your-domain/links/share/link-suffix
    

    Se você usar esse domínio apenas para os Dynamic Links, será possível usar um caminho de origem de /** para criar Dynamic Links sem prefixo de caminho:

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    Com a regra acima, é possível criar Dynamic Links como o exemplo a seguir:

    https://your-domain/link-suffix

  4. Implantar as alterações de configuração do Hosting:

    firebase deploy --only hosting

    (opcional) É possível verificar o conteúdo do firebase.json implantado usando a API REST do Hosting.

  5. Somente iOS: no arquivo Info.plist do projeto Xcode, crie uma chave chamada FirebaseDynamicLinksCustomDomains e faça a configuração dela para os prefixos de URL dos Dynamic Links do app. Exemplo:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/promos</string>
      <string>https://example.com/links/share</string>
    </array>
    

Solicitação de prioridade para Dynamic Links e o Hosting

Para Dynamic Links, preste atenção na ordem de prioridade de hospedagem.

  • Verifique se o prefixo de URL de Dynamic Links não está em conflito com configurações de hospedagem de prioridade mais alta, por exemplo, o conteúdo estático hospedado sempre tem prioridade sobre substituições.
  • No atributo rewrites, a resposta do Hosting obedecerá à regra especificada pelo primeiro glob source que captura o caminho solicitado.

Por exemplo, se você configurar um Dynamic Link para your-domain/source-path/link-suffix, mas também tiver conteúdo estático em your-domain/source-path/index.html, o conteúdo estático terá prioridade. Um usuário final verá index.html em vez do Dynamic Link. Da mesma forma, se você tiver conteúdo estático em your-domain/source-path/link-suffix, o usuário final verá o conteúdo estático em vez do Dynamic Link.

Se você quiser usar a mesma marca para Dynamic Links e o Hosting, use uma das opções a seguir para o prefixo de URL de Dynamic Links.

  • Defina o atributo source para corresponder a um prefixo de caminho. Por exemplo, se você tiver um domínio personalizado de example.com, sua regra de substituição poderá ser:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Configure um subdomínio para usar para Dynamic Links e defina o atributo source para corresponder a esse subdomínio. Por exemplo, se você tiver um subdomínio de links.example.com, a regra de substituição poderá ser:

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]