Crie links dinâmicos em um aplicativo Flutter

Você pode criar links dinâmicos curtos ou longos com a API Firebase Dynamic Links Builder. Esta API aceita um link dinâmico longo ou um objeto contendo parâmetros de link dinâmico e retorna URLs como nos exemplos a seguir:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Antes de criar links dinâmicos em seu aplicativo Android, você deve incluir o SDK do Firebase. Se seu aplicativo estiver configurado para receber links dinâmicos, você já concluiu essas etapas e pode pular esta seção.

  1. Instale e inicialize os SDKs do Firebase para Flutter , caso ainda não tenha feito isso.

  2. No diretório raiz do seu projeto Flutter, execute o seguinte comando para instalar o plugin Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Se você estiver criando um aplicativo Android, abra a página Configurações do projeto no console do Firebase e certifique-se de ter especificado sua chave de assinatura SHA-1. Se você usa App Links, especifique também sua chave SHA-256.

  4. No console do Firebase, abra a seção Dynamic Links .

    1. Se você ainda não configurou um domínio para seus Dynamic Links, clique no botão Primeiros passos e siga as instruções.

      Se você já possui um domínio Dynamic Links, anote-o. Você precisa fornecer um domínio Dynamic Links ao criar Dynamic Links programaticamente.

    2. Recomendado : no menu "Mais" (⋮), especifique os padrões de URL permitidos em seus links diretos e links substitutos. Ao fazer isso, você evita que partes não autorizadas criem links dinâmicos que redirecionem do seu domínio para sites que você não controla.

      Consulte Permitir padrões de URL específicos .

Para criar um link dinâmico, crie um novo objeto DynamicLinkParameters e passe-o para buildLink() ou buildShortLink() .

O exemplo mínimo a seguir cria um link dinâmico longo para https://www.example.com/ que abre com com.example.app.android no Android e o aplicativo com.example.app.ios no iOS:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

Para criar um link dinâmico curto, passe o objeto DynamicLinkParameters para buildShortLink() . Construir o link curto requer uma chamada de rede. Por exemplo:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Por padrão, links dinâmicos curtos são gerados com sufixos com apenas alguns caracteres. Embora isso torne os links mais compactos, também introduz a possibilidade de alguém adivinhar um link curto válido. Muitas vezes, não há mal nenhum se alguém fizer isso, porque o link leva a informações públicas.

No entanto, se seus links curtos levarem a informações específicas do usuário, você deverá criar links mais longos com sufixos de 17 caracteres que tornem muito improvável que alguém consiga adivinhar um link dinâmico válido. Para fazer isso, passe ShortDynamicLinkType.unguessable para o método buildShortLink() :

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

Você pode usar a API Dynamic Link Builder para criar links dinâmicos com qualquer um dos parâmetros suportados. Consulte a referência da API .

O exemplo a seguir cria um link dinâmico com vários parâmetros comuns definidos:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Você pode definir parâmetros do Dynamic Link com os seguintes métodos:

Parâmetros DynamicLink
definirLink O link que seu aplicativo será aberto. Especifique um URL que seu aplicativo possa manipular, normalmente o conteúdo ou a carga útil do aplicativo, que inicia uma lógica específica do aplicativo (como creditar um cupom ao usuário ou exibir uma tela de boas-vindas). Este link deve ser um URL bem formatado, codificado corretamente em URL, usar HTTP ou HTTPS e não pode ser outro link dinâmico.
setDomainUriPrefix Seu prefixo de URL do link dinâmico, que você pode encontrar no console do Firebase. Um domínio Dynamic Link se parece com os seguintes exemplos:
https://example.com/link
https://example.page.link
Parâmetros Android
definirFallbackUrl O link a ser aberto quando o aplicativo não estiver instalado. Especifique isso para fazer algo diferente de instalar seu aplicativo da Play Store quando o aplicativo não estiver instalado, como abrir a versão web móvel do conteúdo ou exibir uma página promocional para seu aplicativo.
setMinimumVersion O versionCode da versão mínima do seu aplicativo que pode abrir o link. Caso o app instalado seja de uma versão mais antiga, o usuário é levado à Play Store para atualizar o app.
Parâmetros Ios
setAppStoreId O ID da App Store do seu aplicativo, usado para enviar usuários à App Store quando o aplicativo não está instalado
definirFallbackUrl O link a ser aberto quando o aplicativo não estiver instalado. Especifique isso para fazer algo diferente de instalar seu aplicativo da App Store quando o aplicativo não estiver instalado, como abrir a versão web móvel do conteúdo ou exibir uma página promocional para seu aplicativo.
definirCustomScheme O esquema de URL personalizado do seu aplicativo, se definido como algo diferente do ID do pacote do seu aplicativo
setIpadFallbackUrl O link para abrir em iPads quando o aplicativo não estiver instalado. Especifique isso para fazer algo diferente de instalar seu aplicativo da App Store quando o aplicativo não estiver instalado, como abrir a versão web do conteúdo ou exibir uma página promocional para seu aplicativo.
setIpadBundleId O ID do pacote do aplicativo iOS a ser usado em iPads para abrir o link. O aplicativo deve estar conectado ao seu projeto na página Visão geral do console do Firebase.
setMinimumVersion O número da versão mínima do seu aplicativo que pode abrir o link. Esse sinalizador é passado para seu aplicativo quando ele é aberto, e seu aplicativo deve decidir o que fazer com ele.
Parâmetros de informações de navegação
setForcedRedirectEnabled Se definido como '1', pule a página de visualização do aplicativo quando o link dinâmico for aberto e, em vez disso, redirecione para o aplicativo ou loja. A página de visualização do aplicativo (ativada por padrão) pode enviar os usuários de maneira mais confiável ao destino mais apropriado quando eles abrem links dinâmicos em aplicativos; no entanto, se você espera que um link dinâmico seja aberto apenas em aplicativos que podem abrir links dinâmicos de maneira confiável sem essa página, você pode desativá-lo com este parâmetro. Este parâmetro afetará o comportamento do Dynamic Link apenas no iOS.
Parâmetros SocialMetaTag
definirTítulo O título a ser usado quando o link dinâmico é compartilhado em uma postagem social.
setDescrição A descrição a ser usada quando o link dinâmico é compartilhado em uma postagem social.
setImageUrl O URL de uma imagem relacionada a este link. A imagem deve ter pelo menos 300x200 px e menos de 300 KB.
Parâmetros do GoogleAnalytics
definir Fonte
setMédio
setCampaign
definirTermo
setContent
Parâmetros analíticos do Google Play. Esses parâmetros (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`) são passados ​​​​para a Play Store e também anexados à carga útil do link.
Parâmetros ItunesConnectAnalytics
setProviderToken
setAffiliateToken
setCampaignToken
Parâmetros analíticos do iTunes Connect. Esses parâmetros (`pt`, `at`, `ct`) são passados ​​para a App Store.