Criar Dynamic Links com C++

É possível criar Dynamic Links curtos ou longos com a API Firebase Dynamic Links. Ela usa várias estruturas de parâmetros opcionais para criar links. Links curtos também podem ser criados por meio de um link longo gerado anteriormente. O Firebase Dynamic Links gera um URL como o seguinte:

https://example.page.link/WXYZ

O SDK do C++ funciona no Android e iOS, mas algumas configurações adicionais são necessárias para cada plataforma.

Antes de começar

Antes de poder usar o Firebase Dynamic Links, você precisa:

  • Registrar seu projeto em C++ e configurá-lo para usar o Firebase

    Se o projeto em C++ já usa o Firebase, então ele já está registrado e configurado para o Firebase.

  • Adicionar o SDK do Firebase para C++ ao seu projeto em C ++.

A adição do Firebase ao projeto em C++ envolve tarefas no Console do Firebase e no projeto em C++ aberto. Por exemplo, você faz o download dos arquivos de configuração do Firebase no console e os move para o projeto em C++.

Android

  1. No Console do Firebase, abra a seção Dynamic Links.
  2. Se você ainda não aceitou os Termos de Serviço e definiu um prefixo URI para seus links dinâmicos, faça isso quando solicitado.

    Se você já tem um prefixo URI de Dynamic Links, anote-o, porque ele será necessário ao criar o Dynamic Links de maneira programática.

  3. Recomendado: especifique os padrões de URL permitidos nos links diretos e de fallback. Ao fazer isso, você evita que pessoas não autorizadas criem Dynamic Links que redirecionam para sites que você não controla a partir do seu domínio. Consulte Autorizar padrões de URL.

iOS

  1. No Console do Firebase, abra a seção Dynamic Links.
  2. Se você ainda não aceitou os Termos de Serviço e definiu um prefixo URI para seus links dinâmicos, faça isso quando solicitado.

    Se você já tem um prefixo URI de Dynamic Links, anote-o. Ao criar Dynamic Links de maneira programática, é preciso fornecer um domínio deles.

  3. A biblioteca de cliente C++ do Firebase Dynamic Links usa esquemas de URL personalizado no iOS para processar os links. Você precisa adicionar os esquemas ao app para receber esses links:
    1. Para abrir a configuração do projeto, clique duas vezes no nome dele na visualização em árvore à esquerda. Selecione seu app na seção DESTINOS. Em seguida, selecione a guia Informações e expanda a seção Tipos de URL.
    2. Clique no botão + e adicione um esquema de URL ao ID do cliente inverso. Para encontrar esse valor, abra o arquivo de configuração GoogleService-Info.plist e procure a chave REVERSED_CLIENT_ID. Copie e cole o valor da chave na caixa Esquemas de URL da página de configuração. Deixe os outros campos em branco.
    3. Clique no botão + e adicione um segundo esquema de URL. Este é o mesmo que o ID do pacote do seu app. Por exemplo, se o ID do pacote for com.example.ios, digite esse valor na caixa Esquemas de URL. É possível encontrar o ID do pacote do seu app na guia Geral das configurações do seu projeto (Identidade > Código do pacote).

Usar o Console do Firebase

Caso você queira fazer testes ou facilitar a criação de um link a ser usado pela sua equipe de marketing em uma postagem de mídia social, acesse o Console do Firebase e siga o formulário passo a passo para gerar um link dinâmico único de forma fácil.

Domínios personalizados

Para ter maior controle sobre o branding do Dynamic Links, use seu próprio domínio em vez de um subdomínio goo.gl ou page.link. Siga estas instruções a fim de configurar um domínio personalizado para seu projeto.

Como usar a API Firebase Dynamic Links

Criar e inicializar o app

Para criar Dynamic Links, você precisa gerar e inicializar um objeto firebase::App.

Inclua o arquivo de cabeçalho de firebase::App:

#include "firebase/app.h"

A próxima etapa varia de acordo com a plataforma:

Android

Para criar o firebase::App, transmita como argumentos o ambiente JNI e uma referência jobject à atividade Java:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

Crie o firebase::App:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

Inicializar biblioteca do Dynamic Links

Antes de criar um link dinâmico, inicialize a biblioteca de Dynamic Links:

::firebase::dynamic_links::Initialize(app, null);

Como criar um link dinâmico longo a partir de parâmetros

Para criar um link dinâmico, gere um objeto DynamicLinkComponents, defina qualquer um dos membros opcionais para configuração extra e transmita esse objeto para dynamic_links::GetShortLink ou dynamic_links::GetLongLink.

O pequeno exemplo a seguir cria um Dynamic Links longo para https://www.example.com/ que pode ser aberto com o app para Android com.example.android.package_name e o app para iOS com.example.ios:

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

Como criar um link dinâmico curto

Para criar um link dinâmico curto, envie um link longo gerado anteriormente para GetShortLink ou crie DynamicLinkComponents da mesma maneira indicada acima.

Opcionalmente, GetShortLink pode ter um parâmetro de configuração adicional DynamicLinkOptions com a propriedade PathLength. Ele permite que você controle como o link será gerado. Para gerar um link curto, é preciso uma solicitação de rede para o back-end do Firebase. Portanto, GetShortLink é assíncrono e retorna um Future<GeneratedLink>.

Por exemplo:

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

Se o programa tiver um loop de atualização executado com frequência, como 30 ou 60 vezes por segundo, será possível verificar os resultados a cada atualização:

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}