Configure um domínio personalizado para Dynamic Links

Você pode ter maior controle sobre a marca de seus links dinâmicos usando seu próprio domínio em vez de um subdomínio page.link . Com domínios personalizados, você pode criar links dinâmicos como nos 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 link-suffix é chamada de prefixo do 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 links dinâmicos.

A configuração de um domínio personalizado requer permissão de editor ou proprietário em seu projeto do Firebase.

Usando seu domínio da web para links dinâmicos

Você pode usar o mesmo domínio para seus links dinâmicos e suas páginas da web, links universais e links de aplicativos, mas, se fizer isso, deverá tomar cuidado para que os URLs dos links dinâmicos não entrem em conflito com os URLs da web. Quando você configura 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, portanto, você não pode usar URLs com esse prefixo para apontar para conteúdo hospedado comum.

Por exemplo, se você quiser criar um link dinâmico para o recurso https://example.com/my-resource (uma página da web, link universal ou link de aplicativo), não poderá usar https://example.com/ como o prefixo de URL do Dynamic Links, porque isso faria com que https://example.com/my-resource fosse tratado como um link dinâmico. Em vez disso, você deve usar um prefixo de URL com um domínio diferente ou um prefixo de caminho diferente.

Portanto, os seguintes links dinâmicos de formato longo (e links curtos equivalentes) não funcionarão conforme esperado porque os URLs especificados pelo parâmetro link começam com o prefixo de URL do link dinâmico, https://example.com/ :

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

Mas os seguintes links dinâmicos de formato longo (e 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

Configure um domínio personalizado no console do Firebase

Geralmente, você pode configurar um domínio personalizado completamente no console do Firebase. Para fazer isso:

  1. Se você não configurou o Firebase Hosting para seu projeto, abra a página Hosting do console do Firebase, clique em Primeiros passos e siga as instruções de configuração. Você não precisa concluir as etapas indicadas neste momento.

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

  3. Se você nunca usou Dynamic Links antes, clique em Primeiros passos . 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 do caminho que deseja usar quando solicitado.

  4. Apenas iOS : no arquivo Info.plist do seu projeto Xcode, crie uma chave chamada FirebaseDynamicLinksCustomDomains e defina-a com os prefixos de URL dos links dinâmicos do seu aplicativo. Por exemplo:

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

Configure um domínio personalizado manualmente

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

Para fazer isso:

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

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

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

  3. Configure seu site de hospedagem para links dinâmicos no arquivo firebase.json do seu projeto. Se o seu projeto tiver vários sites, certifique-se de configurar o site conectado ao domínio que deseja usar.

    • Defina appAssociation como AUTO . Com essa configuração, o Hosting gera dinamicamente os arquivos assetlinks.json e apple-app-site-association quando solicitados.

    • Especifique os prefixos de caminho que você deseja usar para Dynamic Links definindo regras de reescrita com dynamicLinks definidos como true . As solicitações para esses caminhos são enviadas por proxy para Dynamic Links.

      Ao contrário das regras que reescrevem caminhos para URLs, as regras de reescrita do Dynamic Link não podem conter expressões regulares.

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

    Por exemplo:

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

    Com a configuração acima, você pode criar links dinâmicos com prefixos de URL como nos exemplos a seguir:

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

    Se você usar esse domínio apenas para links dinâmicos, poderá usar um caminho de origem /** para criar links dinâmicos sem prefixo de caminho:

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

    Com a regra acima, você pode criar links dinâmicos como no exemplo a seguir:

    https://your-domain/link-suffix

  4. Implante as alterações na configuração do Hosting:

    firebase deploy --only hosting

    (opcional) Você pode verificar o conteúdo firebase.json implantado usando a API REST do Hosting .

  5. Apenas iOS : no arquivo Info.plist do seu projeto Xcode, crie uma chave chamada FirebaseDynamicLinksCustomDomains e defina-a com os prefixos de URL dos links dinâmicos do seu aplicativo. Por exemplo:

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

Ordem de prioridade para links dinâmicos e hospedagem

Para links dinâmicos, esteja particularmente atento à ordem de prioridade de hospedagem .

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

Por exemplo, se você configurar um link dinâmico 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á precedência. Um usuário final verá index.html em vez do link dinâmico. 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 link dinâmico.

Se você quiser usar a mesma marca para links dinâmicos e hospedagem, considere uma das seguintes opções para seu prefixo de URL de links dinâmicos:

  • Defina seu atributo source para corresponder a um prefixo de caminho. Por exemplo, se você tiver um domínio personalizado example.com , sua regra de reescrita poderia 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 seu atributo source para corresponder a esse subdomínio. Por exemplo, se você tiver um subdomínio links.example.com , sua regra de reescrita poderia ser:

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